OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/tags/w11a_V0.74/tools/asm-11/lib
    from Rev 35 to Rev 38
    Reverse comparison

Rev 35 → Rev 38

/vec_devcatch_reset.mac
0,0 → 1,49
; $Id: vec_devcatch_reset.mac 710 2015-08-31 06:19:56Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; re-write vector catcher for device interrupts (subset used by w11)
;
mov #v..dlr+2,v..dlr ; vec 60 (DL11-RX 1st)
clr v..dlr+2
mov #v..dlt+2,v..dlt ; vec 64 (DL11-TX 1st)
clr v..dlt+2
;
mov #v..ptr+2,v..ptr ; vec 70 (PC11/PTR)
clr v..ptr+2
mov #v..ptp+2,v..ptp ; vec 74 (PC11/PTP)
clr v..ptp+2
;
mov #v..kwl+2,v..kwl ; vec 100 (KW11-L)
clr v..kwl+2
mov #v..kwp+2,v..kwp ; vec 104 (KW11-P)
clr v..kwp+2
;
mov #v..deu+2,v..deu ; vec 120 (DEUNA)
clr v..deu+2
;
mov #v..rl+2,v..rl ; vec 120 (RL11)
clr v..rl+2
;
mov #v..lp+2,v..lp ; vec 200 (LP11)
clr v..lp+2
;
mov #v..rk+2,v..rk ; vec 220 (RK11)
clr v..rk+2
mov #v..tm+2,v..tm ; vec 224 (TM11)
clr v..tm+2
;
mov #v..rp+2,v..rp ; vec 254 (RHRP)
clr v..rp+2
mov #v..iis+2,v..iis ; vec 250 (IIST)
clr v..iis+2
;
mov #v..d2r+2,v..d2r ; vec 300 (DL11-RX 2nd)
clr v..d2r+2
mov #v..d2t+2,v..d2t ; vec 304 (DL11-TX 2nd)
clr v..d2t+2
mov #v..dzr+2,v..dzr ; vec 310 (DZ11-RX)
clr v..dzr+2
mov #v..dzt+2,v..dzt ; vec 314 (DZ11-TX)
clr v..dzt+2
;
/defs_nzvc.mac
0,0 → 1,22
; $Id: defs_nzvc.mac 710 2015-08-31 06:19:56Z 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 condition code combinations
;
cp0000=000000 ; N=0 Z=0 V=0 C=0
cp000c=000001 ; N=0 Z=0 V=0 C=1
cp00v0=000002 ; N=0 Z=0 V=1 C=0
cp00vc=000003 ; N=0 Z=0 V=1 C=1
cp0z00=000004 ; N=0 Z=1 V=0 C=0
cp0z0c=000005 ; N=0 Z=1 V=0 C=1
cp0zv0=000006 ; N=0 Z=1 V=1 C=0
cp0zvc=000007 ; N=0 Z=1 V=1 C=1
cpn000=000010 ; N=1 Z=0 V=0 C=0
cpn00c=000011 ; N=1 Z=0 V=0 C=1
cpn0v0=000012 ; N=1 Z=0 V=1 C=0
cpn0vc=000013 ; N=1 Z=0 V=1 C=1
cpnz00=000014 ; N=1 Z=1 V=0 C=0
cpnz0c=000015 ; N=1 Z=1 V=0 C=1
cpnzv0=000016 ; N=1 Z=1 V=1 C=0
cpnzvc=000017 ; N=1 Z=1 V=1 C=1
/tcode_std_start.mac
0,0 → 1,63
; $Id: tcode_std_start.mac 712 2015-11-01 22:53:45Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; Default tcode startup code
;
.include |lib/defs_bits.mac|
.include |lib/defs_cpu.mac|
.include |lib/defs_nzvc.mac|
;
.include |lib/vec_cpucatch.mac|
.include |lib/vec_devcatch.mac|
;
. = 000200
jmp @#start
;
. = 002000
stack:
;
dostop: halt ; successful halt address is 2002 !!
stop: br dostop ; no restart after successful halt !!
;
psreg: .word cp.dsr ; pointer to switch reg (default->hardware)
pdreg: .word cp.dsr ; pointer to display reg (default->hardware)
swsreg: .word 0 ; software switch reg
swdreg: .word 0 ; software display reg
;
tstno: .word 0 ; test number
runno: .word 0 ; run number
;
;
start: reset ; general reset
mov #stack,sp ; setup stack
;
mov #v..lp+2,v..lp ; setup LP11 vector catcher
clr v..lp
;
tst swsreg ; software switch reg setup ?
bne 200$ ; if yes use software swi and disp reg
;
mov #100$,v..iit ; setup IIT handler
mov #cp.pr7,v..iit+2
;
mov 200$,r5 ; setup failed probe code pointer
mov @#cp.dsr,r0 ; test switch register
clr @#cp.dsr ; test display register
br 300$
;
; IIT handler for probing. Simply use r5 as return address
; --> successful probes simply fall through
; --> unsuccessful probes branch to address given in r5
;
100$: mov r5,(sp)
rti
;
; setup software swi and disp reg
;
200$: mov #swsreg,psreg
mov #swdreg,pdreg
;
300$: mov #v..iit+2,v..iit ; reset to iit vector catcher
clr v..iit+2
;
/defs_reg70.mac
0,0 → 1,30
; $Id: defs_reg70.mac 707 2015-08-02 12:10:42Z 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 11/70 CPU registers (as in defs_reg70.das)
;
stklim = 177774
pirq = 177772
mbrk = 177770
cpuerr = 177766
sysid = 177764
hisize = 177762
losize = 177760
ubmap = 170200
;
ms.hm = 177752
ms.mai = 177750
ms.ctl = 177746
ms.err = 177744
ms.ehi = 177742
ms.elo = 177740
;
; symbol definitions for cpuerr
;
cp.hlt = 000200
cp.aer = 000100
cp.nxm = 000040
cp.ito = 000020
cp.ysv = 000010
cp.rsv = 000004
/vec_cpucatch.mac
0,0 → 1,29
; $Id: vec_cpucatch.mac 710 2015-08-31 06:19:56Z 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 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
/vec_cpucatch_reset.mac
0,0 → 1,29
; $Id: vec_cpucatch_reset.mac 710 2015-08-31 06:19:56Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; re-write vector catcher for basic cpu interrupts
;
mov #v..iit+2,v..iit ; vec 4
clr v..iit+2
mov #v..rit+2,v..rit ; vec 10
clr v..rit+2
;
mov #v..bpt+2,v..bpt ; vec 14 (T bit; BPT)
clr v..bpt+2
mov #v..iot+2,v..iot ; vec 20 (IOT)
clr v..iot+2
mov #v..pwr+2,v..pwr ; vec 24 (Power fail, not used)
clr v..pwr+2
mov #v..emt+2,v..emt ; vec 30 (EMT)
clr v..emt+2
mov #v..trp+2,v..trp ; vec 34 (TRAP)
clr v..trp+2
;
mov #v..pir+2,v..pir ; vec 240 (PIRQ)
clr v..pir+2
mov #v..fpp+2,v..fpp ; vec 244 (FPP)
clr v..fpp+2
mov #v..mmu+2,v..mmu ; vec 250 (MMU)
clr v..mmu+2
;
/defs_mmu.mac
0,0 → 1,57
; $Id: defs_mmu.mac 707 2015-08-02 12:10:42Z 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 mmu registers (as in defs_mmu.das)
;
ssr0 = 177572
ssr1 = 177574
ssr2 = 177576
ssr3 = 172516
;
uipdr = 177600 ; usr i page dsc base
udpdr = 177620 ; usr d page dsc base
udpdr = 177620 ; usr d page dsc base
uipar = 177640 ; usr i page addr base
udpar = 177660 ; usr d page addr base
sipdr = 172200 ; sup i page dsc base
sdpdr = 172220 ; sup d page dsc base
sipar = 172240 ; sup i page addr base
sdpar = 172260 ; sup d page addr base
kipdr = 172300 ; ker i page dsc base
kdpdr = 172320 ; ker d page dsc base
kipar = 172340 ; ker i page addr base
kdpar = 172360 ; ker d page addr base
;
; symbol definitions for ssr0
;
m0.anr = 100000
m0.ale = 040000
m0.ard = 020000
m0.trp = 010000
m0.ent = 001000
m0.mai = 000400
m0.ico = 000200
m0.dsp = 000020
m0.ena = 000001
;
; symbol definitions for ssr3
;
m3.eub = 000040
m3.e22 = 000020
m3.dkm = 000004
m3.dsm = 000002
m3.dum = 000001
;
; symbol definitions for pdr regs
;
md.aia = 000200
md.aiw = 000100
md.dwn = 000010
md.an7 = 000007
md.arw = 000006
md.atw = 000005
md.atr = 000004
md.an3 = 000003
md.aro = 000002
md.art = 000001
/tcode_std_base.mac
0,0 → 1,37
; $Id: tcode_std_base.mac 710 2015-08-31 06:19:56Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; Default tcode base code for simple tests
;
.include |lib/tcode_std_start.mac|
;
clr @pdreg ; clear display reg
jmp loop1
;
; IOT handler
; called at end of each test
; increments tstno and updates display register
;
vh.iot: inc tstno ; bump test number
; setup display reg
movb tstno,swdreg ; low byte: test number
movb runno,swdreg+1 ; high byte: pass number
mov swdreg,@pdreg ; write display reg (is noop when sw dreg used)
rtt
;
loop: bit #bit00,@psreg ; test 'loop bit'
bne 1$
jmp stop
 
1$: reset ; re-reset CPU for each pass
mov #stack,sp ; re-init SP
clr tstno ; reset test counter
inc runno ; bump pass counter
;
.include |lib/vec_cpucatch_reset.mac|
.include |lib/vec_devcatch_reset.mac|
;
loop1:
mov #vh.iot,v..iot ; setup IOT trap handler
mov #cp.pr7,v..iot+2
/vec_devcatch.mac
0,0 → 1,82
; $Id: vec_devcatch.mac 710 2015-08-31 06:19:56Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
; vector catcher for device interrupts (subset used by w11)
;
; w11 device summary from ibdr_maxisys.vhd:
;
; ibbase vec pri slot attn sror device name
; 177560 060 4 7 7 1 3/2 DL11-RX 1st
; 064 4 6 6 ^ DL11-TX 1st
; 177550 070 4 3 3 10 4/1 PC11/PTR
; 074 4 2 2 ^ PC11/PTP
; 177546 100 6 14 15 - 1/3 KW11-L
; 172540 104 7 17 - 1/1 KW11-P
; 174510 120 5 14 9 1/4 DEUNA
; 174400 160 5 12 12 5 2/2 RL11
; 177514 200 4 1 1 8 4/2 LP11
; 177400 220 5 11 11 4 2/3 RK11
; 172520 224 5 10 10 7 2/4 TM11
; 176700 254 5 13 13 6 2/1 RHRP
; 177500 260 6 15 16 - 1/2 IIST
; 176500 300 4 5 5 2 3/3 DL11-RX 2nd
; 304 4 4 4 ^ DL11-TX 2nd
; 160100 310? 5 9 9 3 3/1 DZ11-RX
; 314? 5 8 8 ^ DZ11-TX
;
. = 000060
v..dlr: .word v..dlr+2 ; vec 60 (DL11-RX 1st)
.word 0
v..dlt: .word v..dlt+2 ; vec 64 (DL11-TX 1st)
.word 0
;
v..ptr: .word v..ptr+2 ; vec 70 (PC11/PTR)
.word 0
v..ptp: .word v..ptp+2 ; vec 74 (PC11/PTP)
.word 0
;
. = 000100
v..kwl: .word v..kwl+2 ; vec 100 (KW11-L)
.word 0
v..kwp: .word v..kwp+2 ; vec 104 (KW11-P)
.word 0
;
. = 000120
v..deu: .word v..deu+2 ; vec 120 (DEUNA)
.word 0
;
. = 000160
v..rl: .word v..rl+2 ; vec 120 (RL11)
.word 0
;
; Note on vector 200
; MAINDECs use 200 also as default start address. This vector catcher
; might therefore be overwritten later by startup code of test programs.
;
. = 000200
v..lp: .word v..lp+2 ; vec 200 (LP11)
.word 0
;
. = 000220
v..rk: .word v..rk+2 ; vec 220 (RK11)
.word 0
v..tm: .word v..tm+2 ; vec 224 (TM11)
.word 0
;
. = 000254
v..rp: .word v..rp+2 ; vec 254 (RHRP)
.word 0
v..iis: .word v..iis+2 ; vec 250 (IIST)
.word 0
;
. = 000300
v..d2r: .word v..d2r+2 ; vec 300 (DL11-RX 2nd)
.word 0
v..d2t: .word v..d2t+2 ; vec 304 (DL11-TX 2nd)
.word 0
v..dzr: .word v..dzr+2 ; vec 310 (DZ11-RX)
.word 0
v..dzt: .word v..dzt+2 ; vec 314 (DZ11-TX)
.word 0
;
/defs_rp.mac
0,0 → 1,77
; $Id: defs_rp.mac 691 2015-06-15 21:22:08Z 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.frd=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
/defs_tm.mac
0,0 → 1,38
; $Id: defs_tm.mac 683 2015-05-17 21:54:35Z 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 RK11 controler
;
; register addresses
;
tm.sr =172520
tm.cr =172522
tm.bc =172524
tm.ba =172526
tm.db =172530
tm.rl =172532
;
; symbol definitions for tm.sr
;
tm.icm=100000
tm.eof=040000
tm.pae=010000
tm.eot=002000
tm.rle=001000
tm.bte=000400
tm.nxm=000200
tm.onl=000100
tm.bot=000040
tm.wrl=000004
tm.rew=000002
tm.tur=000001
;
; symbol definitions for tm.cr
;
tm.err=100000
tm.ini=010000
tm.pev=004000
tm.rdy=000200
tm.ie =000100
tm.go =000001
/kproct.mac
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
/defs_bits.mac
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
/kprfmt.mac
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
 
/kprstr.mac
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
/defs_cpu.mac
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
/kprdec.mac
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
/kprchr.mac
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
/defs_rk.mac
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
/.
. Property changes : Added: svn:ignore ## -0,0 +1,42 ## +*.gz +*.tar +*.tgz +*.dep_* +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +*.svf +*.log +isim +*_[sfot]sim.vhd +*_tsim.sdf +rlink_cext_fifo_[rt]x +rlink_cext_conf +tmu_ofile +*.dsk +*.tap +*.lst +*.cof +.Xil +project_mflow +xsim.dir +webtalk_* +*_[sfot]sim +*_[IX]Sim +*_[IX]Sim_[sfot]sim +*.dcp +*.jou +*.pb +*.prj +*.rpt +*.wdb

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.