1
0
mirror of https://github.com/wfjm/w11.git synced 2026-04-26 04:08:17 +00:00

- added RH70/RP/RM big disk support

- many cleanups
This commit is contained in:
Walter F.J. Mueller
2015-05-14 17:00:36 +00:00
parent e91847f8db
commit 4a032e9436
247 changed files with 11301 additions and 3449 deletions

View File

@@ -0,0 +1,22 @@
; $Id: defs_bits.mac 622 2014-12-28 20:45:26Z mueller $
; Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; definitions for generic bits names (as in defs_bits.das)
;
bit15=100000
bit14=040000
bit13=020000
bit12=010000
bit11=004000
bit10=002000
bit09=001000
bit08=000400
bit07=000200
bit06=000100
bit05=000040
bit04=000020
bit03=000010
bit02=000004
bit01=000002
bit00=000001

View File

@@ -0,0 +1,29 @@
; $Id: defs_cpu.mac 622 2014-12-28 20:45:26Z mueller $
; Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; definitions for basic CPU registers (as in defs_cpu.das)
;
cp.psw = 177776
cp.dsr = 177570
;
; symbol definitions for cp.psw
;
cp.cms=040000
cp.cmu=140000
cp.pms=010000
cp.pmu=030000
cp.ars=004000
cp.pr0=000000
cp.pr1=000040
cp.pr2=000100
cp.pr3=000140
cp.pr4=000200
cp.pr5=000240
cp.pr6=000300
cp.pr7=000340
cp.t=000020
cp.n=000010
cp.z=000004
cp.v=000002
cp.c=000001

View File

@@ -0,0 +1,71 @@
; $Id: defs_rk.mac 667 2015-04-18 20:16:05Z mueller $
; Copyright 2014- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; definitions for RK11 controler (as in defs_rk.das)
;
; register addresses
;
rk.ds=177400
rk.er=177402
rk.cs=177404
rk.wc=177406
rk.ba=177410
rk.da=177412
rk.mr=177414
;
; symbol definitions for rk.cs
;
rk.err=100000
rk.he=040000
rk.scp=020000
rk.mai=010000
rk.iba=004000
rk.fmt=002000
rk.rwa=001000
rk.sse=000400
rk.rdy=000200
rk.ie=000100
rk.fwr=000002
rk.frd=000004
rk.fwc=000006
rk.fse=000010
rk.frc=000012
rk.fdr=000014
rk.fwl=000016
rk.go=000001
;
; symbol definitions for rk.ds
;
rk.id1=020000
rk.id2=040000
rk.id3=060000
rk.id4=100000
rk.id5=120000
rk.id6=140000
rk.id7=160000
rk.dpl=010000
rk.hde=004000
rk.dru=002000
rk.sin=001000
rk.sok=000400
rk.dry=000200
rk.ary=000100
rk.wps=000040
rk.seq=000020
;
; symbol definitions for rk.er
;
rk.dre=100000
rk.ovr=040000
rk.wlo=020000
rk.ske=010000
rk.pce=004000
rk.nxm=002000
rk.dlt=001000
rk.rte=000400
rk.nxd=000200
rk.nxc=000100
rk.nxs=000040
rk.cse=000002
rk.wce=000001

View File

@@ -0,0 +1,77 @@
; $Id: defs_rp.mac 667 2015-04-18 20:16:05Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; definitions for RH70/RPRM controler
;
; register addresses
;
rp.cs1=176700
rp.wc =176702
rp.ba =176704
rp.da =176706
rp.cs2=176710
rp.ds =176712
rp.er1=176714
rp.as =176716
rp.la =176720
rp.db =176722
rp.mr1=176724
rp.dt =176726
rp.sn =176730
rp.of =176732
rp.dc =176734
rp.m13=176736
rp.m14=176740
rp.m15=176742
rp.ec1=176744
rp.ec2=176746
rp.bae=176750
rp.cs3=176752
;
; symbol definitions for rp.cs1
;
rp.sc =100000
rp.tre=040000
rp.dva=004000
rp.rdy=000200
rp.ie =000100
rp.fsk=000004 ; seek
rp.fcl=000010 ; drive clear
rp.fse=000030 ; search
rp.fwr=000060 ; write
rp.fwr=000070 ; read
rp.go =000001
;
; symbol definitions for rp.ds
;
rp.ata=100000
rp.erp=040000
rp.pip=020000
rp.mol=010000
rp.wrl=004000
rp.lbt=002000
rp.pgm=001000
rp.dpr=000400
rp.dry=000200
rp.vv =000100
rp.om =000001
;
; symbol definitions for rp.er1
;
rp.dck=100000
rp.uns=040000
rp.opi=020000
rp.dte=010000
rp.wle=004000
rp.iae=002000
rp.aoe=001000
rp.hcr=000400
rp.hce=000200
rp.ech=000100
rp.wcf=000040
rp.fer=000020
rp.par=000010
rp.rmr=000004
rp.ilr=000002
rp.ilf=000001

View File

@@ -0,0 +1,22 @@
; $Id: kprchr.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; synchronous (polling) console print: single character
; Call:
; jsr pc, kprchr
; Arguments:
; r0: character to be printed
;
; All registers preserved
;
XCSR = 177564
XBUF = 177566
kprchr: tstb @#XCSR
bpl kprchr
movb r0,@#XBUF
1$: tstb @#XCSR
bpl 1$
rts pc

View File

@@ -0,0 +1,52 @@
; $Id: kprdec.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; synchronous (polling) console print: print signed decimal number
; Call:
; jsr pc, kprdec
; Arguments:
; r0: number to print
;
; r1-r5 registers preserved
;
kprdec: mov r1,-(sp) ; save r1,..,r3
mov r2,-(sp)
mov r3,-(sp)
mov r0,r2 ; setup number to convert
bge 1$ ; if negative
neg r2 ; negate
mov #'-,r0 ; and print a '-'
jsr pc,kprchr
1$: mov #101$,r1 ; r1 points behind end of buffer
clrb -(r1) ; ensure 0-termination
movb #'.,-(r1) ; and trailing '.' to indicate decimal
mov #5,r0 ; loop over 5 digits
tst r2 ; number 0
bne 2$ ; if not convert
movb #'0,-(r1) ; if yes, ensure that '0' is printed
br 3$
2$: mov r2,r3 ; r2 is rest to convert
beq 3$ ; break if zero
clr r2 ; now (r2,r3) 32bit rest to convert
div #10.,r2 ; div: r2->quotient; r3->reminder
add #'0,r3 ; r3 is reminder, convert to char
movb r3,-(r1) ; write (backwards) to buffer
sob r0,2$ ; go for next digit
3$: mov r1,r0 ; r1 now points to convered string
jsr pc,kprstr ; print it
mov (sp)+,r3 ; restore r1,..,r3
mov (sp)+,r2
mov (sp)+,r1
rts pc
100$: .blkb 7. ; buffer
101$: ; end-of-buffer
.even

View File

@@ -0,0 +1,53 @@
; $Id: kprfmt.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; synchronous (polling) console print: very simple printf
; Call:
; jsr pc, kprfmt
; Arguments:
; r0: pointer format string
; r1: pointer to argument list
;
; r2-r5 registers preserved
;
kprfmt: mov r2,-(sp) ; save r2
mov r0,r2 ; r2 now ptr to fmt string
1$: movb (r2)+,r0 ; next fmt char
beq 20$ ; if zero quit
cmpb #'%,r0 ; is it '%' ?
bne 10$ ; if not, print
movb (r2)+,r0 ; if yes, get next
beq 20$ ; if zero quit
cmpb #'s,r0 ; %s found ?
bne 2$
mov (r1)+,r0 ; get next arg
jsr pc,kprstr ; and print string
br 1$ ; go for next fmt char
2$: cmpb #'o,r0 ; %o found ?
bne 3$
mov (r1)+,r0 ; get next arg
jsr pc,kproct ; and print octal number
br 1$ ; go for next fmt char
3$: cmpb #'d,r0 ; %d found
bne 4$
mov (r1)+,r0 ; get next arg
jsr pc,kprdec ; and print as decimal number
br 1$
4$: movb -2(r2),r0 ; was neither %s,%o,%d
jsr pc,kprchr ; so simply print these two letters...
movb -1(r2),r0
10$: jsr pc,kprchr ; print fmt char
br 1$ ; go for next fmt char
20$: mov (sp)+,r2 ; restore r2
rts pc

View File

@@ -0,0 +1,38 @@
; $Id: kproct.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; synchronous (polling) console print: print octal number
; Call:
; jsr pc, kproct
; Arguments:
; r0: number to print
;
; r1-r5 registers preserved
;
kproct: mov r1,-(sp) ; save r1,..,r3
mov r2,-(sp)
mov r3,-(sp)
mov #101$,r1 ; r1 points behind end of buffer
clrb -(r1) ; ensure 0-termination
mov #6,r2 ; loop over 6 digits
1$: mov r0,r3 ; get reminder
bic #177770,r3 ; mask 3 lsb
add #'0,r3 ; add ascii 0 code
movb r3,-(r1) ; write (backwards) to buffer
clc ; unsigned divide by 8
ror r0
asr r0
asr r0
sob r2,1$ ; go for next digit
mov r1,r0 ; r1 now points to convered string
jsr pc,kprstr ; print it
mov (sp)+,r3 ; restore r1,..,r3
mov (sp)+,r2
mov (sp)+,r1
rts pc
100$: .blkb 7. ; buffer
101$: ; end-of-buffer
.even

View File

@@ -0,0 +1,21 @@
; $Id: kprstr.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; synchronous (polling) console print: print 0-terminated string
; Call:
; jsr pc, kprstr
; Arguments:
; r0: pointer to 0-terminated string
;
; r1-r5 registers preserved
;
kprstr: mov r1,-(sp) ; save r1
mov r0,r1 ; r1 now ptr to string
1$: movb (r1)+,r0 ; get next char
beq 2$ ; quit if 0 char
jsr pc,kprchr ; otherwise print char
br 1$ ; go for next char
2$: mov (sp)+,r1 ; restore r1
rts pc

View File

@@ -0,0 +1,29 @@
; $Id: vec_cpucatch.mac 503 2013-04-06 19:44:13Z mueller $
; Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; vector catcher for the basic cpu interrupts
;
. = 000004
v..iit: .word v..iit+2 ; vec 4
.word 0
v..rit: .word v..rit+2 ; vec 10
.word 0
v..bpt: .word v..bpt+2 ; vec 14 (T bit; BPT)
.word 0
v..iot: .word v..iot+2 ; vec 20 (IOT)
.word 0
v..pwr: .word v..pwr+2 ; vec 24 (Power fail, not used)
.word 0
v..emt: .word v..emt+2 ; vec 30 (EMT)
.word 0
v..trp: .word v..trp+2 ; vec 34 (TRAP)
.word 0
. = 000240
v..pir: .word v..pir+2 ; vec 240 (PIRQ)
.word 0
v..fpp: .word v..fpp+2 ; vec 244 (FPP)
.word 0
v..mmu: .word v..mmu+2 ; vec 250 (MMU)
.word 0