[Simh] VAX 8200
Rick Murphy
simh at rickmurphy.net
Sat Mar 18 11:47:40 EDT 2017
On 3/16/2017 11:53 PM, Robert Armstrong wrote:
>
> >Under VMS, PFN map a section to the EEPROM, copy it to normal memory &
> write it to disk.
>
> Um, fair enough. I don’t suppose someone has a program already
> written to do this?
>
> I could have easily done that about ten or fifteen years ago, and in
> theory I still can, but it’ll probably take an afternoon with the VMS
> manuals to remember how J
>
Here's an example, which I wrote for the MicroVAX. Took me a bit to find
this.
The program creates a file called ROM.EXE and copies the boot ROM into
that file.
Note the " vbn=#<^X20040000/512>" line - that
says that the ROM is mapped into physical address 20040000 on that
system. Likely different for others. Size of the ROM is calculated by
the "page_count" variable.
-Rick
.title copyrom - Copy the rom
.psect data rd, wrt, nopic, noshr, noexe, long
.library /sys$Library:lib/
$iouv2def
$secdef
.psect data rd, wrt, nopic, noshr, noexe, long
page_count = ^X10000/^X200
file_fab: $FAB ALQ=page_count,-
FAC=<GET,PUT>,-
FNM=<ROM.EXE>,-
FOP=UFO
p1_space: .quad 0
copy_sec_base: .long 0
.long 0
rom_sec_base: .long 0
.long 0
buf_descr: .long 80
.address buffer
buffer: .blkb 80
format: .ascid /Checksum is !XW/
.psect code rd, nowrt, pic, noshr, exe, long
.entry go, ^m<>
$create fab=file_fab
blbs r0, 10$
ret
10$: $crmpsc_s inadr=p1_space,-
retadr=copy_sec_base,-
flags=#<sec$m_expreg!sec$m_wrt>,-
chan=file_fab+fab$l_stv
blbs r0, 20$
ret
20$: $crmpsc_s inadr=p1_space,-
retadr=rom_sec_base,-
flags=#<sec$m_expreg!sec$m_pfnmap>,-
pagcnt=#page_count,-
vbn=#<^X20040000/512>
blbs r0, 30$
ret
30$: movl rom_sec_base, r0
movl copy_sec_base, r1
movl #^x10000/2, r2
40$: movw (r0)+, (r1)+
sobgtr r2, 40$
movl #1,r0
ret
.end go
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.trailing-edge.com/pipermail/simh/attachments/20170318/3c966f48/attachment-0001.html>
More information about the Simh
mailing list