mirror of
https://github.com/wfjm/w11.git
synced 2026-01-13 23:47:36 +00:00
new tools/mcode area
- for test and demonstration, starting with - dl11/dl11echo.mac: console interface echo tester - sys/blink.mac: 'blinking lights' demo (rsx,bsd and other modes) - retire tools/asm-11/w11 area
This commit is contained in:
parent
afcf56463a
commit
08b6ddcaf7
@ -35,6 +35,9 @@ The full set of tests is only run for tagged releases.
|
||||
- w11a_ibmon/*: tbench for ibd_ibmon
|
||||
- w11a/test_w11a_sdreg.tcl: tbench for sdreg
|
||||
- test_lp11_all.tcl: tbench for lp11 and lp11_buf
|
||||
- new test and demonstration codes under tools/mcode
|
||||
- dl11/dl11echo.mac: console interface echo tester
|
||||
- sys/blink.mac: 'blinking lights' demo (rsx,bsd and other modes)
|
||||
- new tools
|
||||
- ldadump: lda file dumper
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ This directory tree contains **many tools** and is organized in
|
||||
| [fx2](fx2) | firmware for Cypress FX2 USB interface |
|
||||
| [make](make) | make includes |
|
||||
| [man](man) | man pages |
|
||||
| [mcode](mcode) | miscellaneous codes |
|
||||
| [oskit](oskit) | support files for OS disk/tape image kits |
|
||||
| [simh](simh) | configuration files for `simh pdp11` |
|
||||
| [src](src) | C++ sources for rlink backend |
|
||||
|
||||
3
tools/asm-11/w11/sys/dl11/.gitignore
vendored
3
tools/asm-11/w11/sys/dl11/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
*.lda
|
||||
*.ldart
|
||||
*.lstrt
|
||||
@ -1,30 +0,0 @@
|
||||
# $Id: Makefile 733 2016-02-20 12:24:13Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2013-03-22 496 1.0 Initial version
|
||||
#---
|
||||
#
|
||||
MAC_all = $(wildcard *.mac)
|
||||
LDA_all = $(MAC_all:.mac=.lda)
|
||||
COF_all = $(MAC_all:.mac=.cof)
|
||||
#
|
||||
include ${RETROBASE}/tools/make/generic_asm11.mk
|
||||
#
|
||||
.PHONY : alllda allcof alllst clean
|
||||
#
|
||||
def : alllda
|
||||
#
|
||||
alllda : $(LDA_all)
|
||||
#
|
||||
allcof : $(COF_all)
|
||||
#
|
||||
alllst : $(LST_all)
|
||||
#
|
||||
clean :
|
||||
@ rm -f $(LDA_all)
|
||||
@ echo "Object files removed"
|
||||
@ rm -f $(COF_all)
|
||||
@ echo "Compound files removed"
|
||||
@ rm -f $(LST_all)
|
||||
@ echo "Listing files removed"
|
||||
@ -1,31 +0,0 @@
|
||||
; $Id: noboot.mac 521 2013-05-20 22:16:45Z mueller $
|
||||
;
|
||||
; Boot blocker, when loaded and started at 0, writes
|
||||
; This is not a hardware bootable disk
|
||||
;
|
||||
RCSR = 177560
|
||||
RBUF = 177562
|
||||
XCSR = 177564
|
||||
XBUF = 177566
|
||||
;
|
||||
CR = 015
|
||||
LF = 012
|
||||
;
|
||||
; starts at 0 !
|
||||
;
|
||||
.asect
|
||||
. = 0
|
||||
;
|
||||
start: mov #text, r0
|
||||
1$: tstb (r0)
|
||||
beq 3$
|
||||
2$: tstb @#XCSR
|
||||
bpl 2$
|
||||
movb (r0)+,@#XBUF
|
||||
br 1$
|
||||
3$: halt
|
||||
;
|
||||
. = 100
|
||||
text: .asciz /This is not a hardware bootable disk/<CR><LF>
|
||||
;
|
||||
.end
|
||||
@ -1,38 +0,0 @@
|
||||
; $Id: simple_echo.mac 504 2013-04-13 15:37:24Z mueller $
|
||||
;
|
||||
; simple echo test for DL11 interface
|
||||
;
|
||||
RCSR = 177560
|
||||
RBUF = 177562
|
||||
XCSR = 177564
|
||||
XBUF = 177566
|
||||
;
|
||||
CR = 015
|
||||
LF = 012
|
||||
;
|
||||
; transfer vector
|
||||
;
|
||||
.asect
|
||||
. = 200
|
||||
jmp start
|
||||
;
|
||||
; test code
|
||||
;
|
||||
. = 1000
|
||||
;
|
||||
start: mov #start,sp
|
||||
;
|
||||
1$: tstb @#RCSR ; input ready ?
|
||||
bpl 1$ ; if not poll
|
||||
movb @#RBUF,r0 ; get input char
|
||||
2$: tstb @#XCSR ; output ready ?
|
||||
bpl 2$ ; if not poll
|
||||
movb r0,@#XBUF ; echo received char
|
||||
cmpb #CR,r0 ; was it CR ?
|
||||
bne 1$ ; if not, wait for next input
|
||||
3$: tstb @#XCSR ; output ready ?
|
||||
bpl 3$
|
||||
movb #LF,@#XBUF ; send LF
|
||||
br 1$
|
||||
;
|
||||
.end
|
||||
@ -1,34 +0,0 @@
|
||||
; $Id: simple_out.mac 503 2013-04-06 19:44:13Z mueller $
|
||||
;
|
||||
; simple output test for DL11 interface
|
||||
;
|
||||
RCSR = 177560
|
||||
RBUF = 177562
|
||||
XCSR = 177564
|
||||
XBUF = 177566
|
||||
;
|
||||
CR = 015
|
||||
LF = 012
|
||||
;
|
||||
; transfer vector
|
||||
;
|
||||
.asect
|
||||
. = 200
|
||||
jmp start
|
||||
;
|
||||
; test code
|
||||
;
|
||||
. = 1000
|
||||
;
|
||||
start: mov #start,sp
|
||||
mov #hw, r0
|
||||
1$: tstb (r0)
|
||||
beq start
|
||||
2$: tstb @#XCSR
|
||||
bpl 2$
|
||||
movb (r0)+,@#XBUF
|
||||
br 1$
|
||||
;
|
||||
hw: .asciz /Hello world!/<CR><LF>
|
||||
;
|
||||
.end
|
||||
6
tools/mcode/README.md
Normal file
6
tools/mcode/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
This directory tree contains **miscellaneous codes** and is organized in
|
||||
|
||||
| Directory | Content |
|
||||
| --------- | ------- |
|
||||
| [dl11](dl11) | for DL11 |
|
||||
| [sys](sys) | for whole system |
|
||||
5
tools/mcode/dl11/README.md
Normal file
5
tools/mcode/dl11/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
This directory tree contains **DL11 test codes** and contains
|
||||
|
||||
| File | Docu | Comments |
|
||||
| --------- | --------- | ------- |
|
||||
| [dl11echo.mac](dl11echo.mac) | - | echo test for DL11 |
|
||||
235
tools/mcode/dl11/dl11echo.mac
Normal file
235
tools/mcode/dl11/dl11echo.mac
Normal file
@ -0,0 +1,235 @@
|
||||
; $Id: dl11echo.mac 1135 2019-04-23 12:56:23Z mueller $
|
||||
; Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
; License disclaimer see License.txt in $RETROBASE directory
|
||||
;
|
||||
; Revision History:
|
||||
; Date Rev Version Comment
|
||||
; 2019-04-21 1134 1.0 Initial version
|
||||
;
|
||||
; DL11 echo
|
||||
; default is direct echo, only modification is to add a LF after CR
|
||||
; other mode can be selected by two ESC plus a character:
|
||||
; ESC + ESC + u -> uppercase
|
||||
; ESC + ESC + l -> lowercase
|
||||
; ESC + ESC + o -> octal echo (16 per line)
|
||||
; ESC + ESC + a -> direct echo
|
||||
;
|
||||
; definitions ----------------------------------------------
|
||||
;
|
||||
.include |lib/defs_cpu.mac|
|
||||
.include |lib/defs_kwl.mac|
|
||||
.include |lib/defs_dl.mac|
|
||||
|
||||
bsize = 1024.
|
||||
;
|
||||
CR = 015
|
||||
LF = 012
|
||||
ESC = 033
|
||||
SPC = 040
|
||||
;
|
||||
; vector area ----------------------------------------------
|
||||
;
|
||||
.include |lib/vec_cpucatch.mac|
|
||||
.include |lib/vec_devcatch.mac|
|
||||
|
||||
. = v..dlr ; DL11 rx vector
|
||||
.word vh.dlr
|
||||
.word cp.ars!cp.pr7 ; use alt-reg-set !
|
||||
|
||||
. = v..dlt ; DL11 tx vector
|
||||
.word vh.dlt
|
||||
.word cp.ars!cp.pr7 ; use alt-reg-set !
|
||||
|
||||
. = v..kwl ; KW11-L vector
|
||||
.word vh.kwl
|
||||
.word cp.ars!cp.pr7 ; use alt-reg-set !
|
||||
;
|
||||
; stack area -----------------------------------------------
|
||||
;
|
||||
. = 1000 ; stack (below); code (above)
|
||||
stack:
|
||||
;
|
||||
; code area ------------------------------------------------
|
||||
;
|
||||
; main program -----------------------------------
|
||||
;
|
||||
start: mov #stack,sp ; setup stack
|
||||
spl 7
|
||||
mov #ti.ie,@#ti.csr ; activate input
|
||||
mov #kl.ie,@#kl.csr
|
||||
spl 0 ; allow interrupts
|
||||
;
|
||||
; simple blinking lights null task
|
||||
; RSX-11M style display, code from RSX-11M V3.1 NULTK.MAC
|
||||
;
|
||||
nultsk: mov #pat,r0
|
||||
aslb (r0)+
|
||||
rorb (r0)
|
||||
adcb -(r0)
|
||||
;
|
||||
mov pat,r0 ; load pattern
|
||||
wait ; and wait
|
||||
mov pat,r0
|
||||
wait
|
||||
mov pat,r0
|
||||
wait
|
||||
mov pat,r0
|
||||
wait
|
||||
;
|
||||
br nultsk
|
||||
;
|
||||
; receive interrupt handler ----------------------
|
||||
;
|
||||
vh.dlr: mov @#ti.buf,r0 ; read char
|
||||
movb r0,curchr ; and remember
|
||||
jsr pc,@curhdl ; call handler
|
||||
jsr pc,chkesc ; check for ESC
|
||||
cmp nfree,#6. ; enough buffer ?
|
||||
bgt 100$ ; if <= 6
|
||||
bic #ti.ie,@#ti.csr ; disable ti irupt
|
||||
100$: rti
|
||||
;
|
||||
; transmit interrupt handler ---------------------
|
||||
;
|
||||
vh.dlt: mov rptr,r1 ; load pointer
|
||||
movb (r1)+,@#to.buf ; send char
|
||||
cmp r1,#bufe ; ring wrap ?
|
||||
blo 1$
|
||||
mov #buf,r1
|
||||
1$: mov r1,rptr ; store pointer
|
||||
inc nfree
|
||||
cmp nfree,#bsize ; more to do ?
|
||||
bne 2$
|
||||
bic #to.ie,@#to.csr ; if not disable to irupt
|
||||
2$: cmp nfree,#6. ; enough buffer ?
|
||||
ble 100$ ; if > 6
|
||||
bis #ti.ie,@#ti.csr ; enable ti irupt
|
||||
100$: rti
|
||||
;
|
||||
; kw11-l line clock handler ----------------------
|
||||
;
|
||||
vh.kwl: rti
|
||||
;
|
||||
; ring buffer write routine ----------------------
|
||||
; in r0 current character
|
||||
; use r1
|
||||
;
|
||||
wchar: tst nfree ; free buffer
|
||||
beq 100$ ; if not, discard !
|
||||
mov wptr,r1 ; load pointer
|
||||
movb r0,(r1)+ ; store char
|
||||
cmp r1,#bufe ; ring wrap ?
|
||||
blo 1$
|
||||
mov #buf,r1
|
||||
1$: mov r1,wptr ; store pointer
|
||||
bis #to.ie,@#to.csr ; enable to irupt
|
||||
dec nfree
|
||||
100$: rts pc
|
||||
;
|
||||
; write CR/LF ------------------------------------
|
||||
; use r0
|
||||
;
|
||||
wcrlf: mov #CR,r0
|
||||
jsr pc,wchar
|
||||
wlf: mov #LF,r0
|
||||
jsr pc,wchar
|
||||
rts pc
|
||||
|
||||
;
|
||||
; escape detection -------------------------------
|
||||
; use r0
|
||||
;
|
||||
chkesc: movb curchr,r0
|
||||
cmpb #ESC,r0
|
||||
bne 1$
|
||||
incb esccnt
|
||||
rts pc
|
||||
1$: cmpb esccnt,#2 ; 2 ESC seen ?
|
||||
blt 200$
|
||||
cmpb #'u,r0 ; u -> hdluc
|
||||
bne 100$
|
||||
mov #hdluc,curhdl
|
||||
br 200$
|
||||
100$: cmpb #'l,r0 ; l -> hdllc
|
||||
bne 110$
|
||||
mov #hdllc,curhdl
|
||||
br 200$
|
||||
110$: cmpb #'a,r0 ; a -> hdldir
|
||||
bne 120$
|
||||
mov #hdldir,curhdl
|
||||
br 200$
|
||||
120$: cmpb #'o,r0 ; o -> hdloct
|
||||
bne 200$
|
||||
mov #hdloct,curhdl
|
||||
jsr pc,wcrlf ; force new line
|
||||
clrb octcnt
|
||||
200$: clrb esccnt
|
||||
rts pc
|
||||
;
|
||||
; character handler ------------------------------
|
||||
; in r0 current character
|
||||
; use r1,r2
|
||||
;
|
||||
hdldir: jsr pc,wchar ; direct mode
|
||||
cmp #CR,r0 ; CR seen
|
||||
bne 100$
|
||||
jsr pc,wlf ; then add LF
|
||||
100$: rts pc
|
||||
|
||||
hdllc: cmp r0,#'A ; lower case mode
|
||||
blt hdldir
|
||||
cmp r0,#'Z
|
||||
bgt hdldir
|
||||
add #<'a-'A>,r0
|
||||
br hdldir
|
||||
|
||||
hdluc: cmp r0,#'a ; upper case mode
|
||||
blt hdldir
|
||||
cmp r0,#'z
|
||||
bgt hdldir
|
||||
sub #<'a-'A>,r0
|
||||
br hdldir
|
||||
|
||||
hdloct: mov r0,r2 ; octal mode
|
||||
ash #-6.,r0
|
||||
jsr pc,woct
|
||||
mov r2,r0
|
||||
ash #-3.,r0
|
||||
jsr pc,woct
|
||||
mov r2,r0
|
||||
jsr pc,woct
|
||||
mov #SPC,r0
|
||||
jsr pc,wchar
|
||||
cmpb #CR,curchr
|
||||
beq 10$
|
||||
incb octcnt
|
||||
cmpb octcnt,#16.
|
||||
blt 100$
|
||||
10$: jsr pc,wcrlf
|
||||
clrb octcnt
|
||||
100$: rts pc
|
||||
;
|
||||
; print octal digit ------------------------------
|
||||
; in r0 current character
|
||||
;
|
||||
woct: bic #370,r0 ; mask
|
||||
add #'0,r0 ; bin->ascii
|
||||
jmp wchar ; and print
|
||||
;
|
||||
; data area ------------------------------------------------
|
||||
;
|
||||
pat: .word 170017
|
||||
;
|
||||
curhdl: .word hdldir
|
||||
curchr: .byte 0
|
||||
esccnt: .byte 0
|
||||
octcnt: .byte 0
|
||||
.even
|
||||
;
|
||||
nfree: .word bsize
|
||||
wptr: .word buf
|
||||
rptr: .word buf
|
||||
buf: .blkb bsize
|
||||
bufe:
|
||||
|
||||
.end start
|
||||
5
tools/mcode/sys/README.md
Normal file
5
tools/mcode/sys/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
This directory tree contains **system codes** and contains
|
||||
|
||||
| File | Docu | Comments |
|
||||
| --------- | --------- | ------- |
|
||||
| [blink.mac](blink.mac) | - | _blinking lights_ demo |
|
||||
258
tools/mcode/sys/blink.mac
Normal file
258
tools/mcode/sys/blink.mac
Normal file
@ -0,0 +1,258 @@
|
||||
; $Id: blink.mac 1135 2019-04-23 12:56:23Z mueller $
|
||||
; Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
; License disclaimer see License.txt in $RETROBASE directory
|
||||
;
|
||||
; Revision History:
|
||||
; Date Rev Version Comment
|
||||
; 2019-04-22 1135 1.0 Initial version
|
||||
;
|
||||
; Show different 'blinking lights' patterns
|
||||
; can be controlled with single letter keyboard commands
|
||||
; styles
|
||||
; r RSX-11M style
|
||||
; b 2.11BSD style
|
||||
; f flipper
|
||||
; c counter
|
||||
; R random pattern
|
||||
; other controls
|
||||
; 0 use default speed
|
||||
; 1-9 set update speed
|
||||
; a auto, cycle styles ! to come !
|
||||
; s surprise, random styles ! to come !
|
||||
;
|
||||
; definitions ----------------------------------------------
|
||||
;
|
||||
.include |lib/defs_cpu.mac|
|
||||
.include |lib/defs_kwl.mac|
|
||||
.include |lib/defs_dl.mac|
|
||||
;
|
||||
smstat = 0 ; static styles
|
||||
smauto = 1 ; auto styles
|
||||
smrand = 2 ; random styles
|
||||
smtime = 500 ; time to style switch (50Hz cycles)
|
||||
;
|
||||
; vector area ----------------------------------------------
|
||||
;
|
||||
.include |lib/vec_cpucatch.mac|
|
||||
.include |lib/vec_devcatch.mac|
|
||||
|
||||
. = v..dlr ; DL11 rx vector
|
||||
.word vh.dlr
|
||||
.word cp.ars!cp.pr7 ; use alt-reg-set !
|
||||
|
||||
. = v..kwl ; KW11-L vector
|
||||
.word vh.kwl
|
||||
.word cp.ars!cp.pr7 ; use alt-reg-set !
|
||||
;
|
||||
; stack area -----------------------------------------------
|
||||
;
|
||||
. = 1000 ; stack (below); code (above)
|
||||
stack:
|
||||
;
|
||||
; code area ------------------------------------------------
|
||||
;
|
||||
; main program -----------------------------------
|
||||
;
|
||||
start: mov #stack,sp ; setup stack
|
||||
jsr pc,inir ; setup 'f' mode
|
||||
spl 7
|
||||
mov #ti.ie,@#ti.csr ; activate input
|
||||
mov #kl.ie,@#kl.csr
|
||||
spl 0 ; allow interrupts
|
||||
;
|
||||
nultsk: mov curspd,r5 ; load speed
|
||||
bne 1$ ; if eq
|
||||
mov defspd,r5 ; use default
|
||||
1$: mov pat,r0 ; load pattern
|
||||
wait ; and proudly show it
|
||||
sob r5,1$ ; wait for interrupt
|
||||
jsr pc,@curhdl ; update pattern
|
||||
;
|
||||
tst smode ; static mode ?
|
||||
beq nultsk ; if eq yes, no action
|
||||
cmp styage,#smtime ; time to change style ?
|
||||
blo nultsk ; if lo, not yet
|
||||
clr styage ; reset timer
|
||||
;
|
||||
cmp smode,#smauto ; auto mode ?
|
||||
bne 100$
|
||||
mov cursty,r0 ; get style index
|
||||
inc r0 ; get next
|
||||
cmp r0,#nstyle ; wrap ?
|
||||
blt 2$
|
||||
clr r0
|
||||
2$: mov r0,cursty
|
||||
asl r0 ; index to offset
|
||||
jsr pc,@initbl(r0) ; call initializer
|
||||
br nultsk
|
||||
;
|
||||
100$: cmp smode,#smrand ; random mode ?
|
||||
bne nultsk
|
||||
jsr pc,randzp ; get random number
|
||||
mov r0,r1
|
||||
clr r0
|
||||
div #nstyle,r0 ; do rand % %nstyle
|
||||
mov r1,cursty ; reminder is new style index
|
||||
asl r1 ; index to offset
|
||||
jsr pc,@initbl(r1) ; call initializer
|
||||
br nultsk
|
||||
;
|
||||
; receive interrupt handler ----------------------
|
||||
;
|
||||
vh.dlr: mov @#ti.buf,r0 ; read char
|
||||
mov r0,r1
|
||||
sub #'0,r1 ; in 0..9 range ?
|
||||
blt 100$
|
||||
cmp r1,#9.
|
||||
bgt 100$
|
||||
mov r1,curspd ; if yes, set current speed
|
||||
br 999$
|
||||
;
|
||||
100$: mov #acttbl,r1 ; ptr to action table
|
||||
101$: mov (r1)+,r2 ; next char
|
||||
beq 999$ ; end of table ?
|
||||
cmp r0,r2 ; match ?
|
||||
beq 102$
|
||||
cmp (r1)+,(r1)+ ; if not, try next
|
||||
br 101$
|
||||
102$: jsr pc,@(r1)+ ; if yes: call action
|
||||
jsr pc,@(r1)+ ; call initializer
|
||||
|
||||
999$: rti
|
||||
;
|
||||
; kw11-l line clock handler ----------------------
|
||||
;
|
||||
vh.kwl: inc styage
|
||||
rti
|
||||
;
|
||||
; control character actions ----------------------
|
||||
;
|
||||
; style switch
|
||||
;
|
||||
actsty: clr smode ; use static styles
|
||||
actnop: rts pc
|
||||
;
|
||||
acta: mov #smauto,smode
|
||||
br actem
|
||||
acts: mov #smrand,smode
|
||||
actem: mov #smtime,styage ; expire timer
|
||||
rts pc
|
||||
;
|
||||
; other control actions
|
||||
;
|
||||
;
|
||||
; style initializer ------------------------------
|
||||
;
|
||||
inir: mov #170017,pat
|
||||
mov #4,defspd
|
||||
mov #hdlr,curhdl
|
||||
rts pc
|
||||
;
|
||||
inib: mov #000377,pat
|
||||
mov #2,defspd
|
||||
mov #hdlb,curhdl
|
||||
rts pc
|
||||
;
|
||||
inif: mov #000001,pat
|
||||
mov #2,defspd
|
||||
mov #hdlf,curhdl
|
||||
rts pc
|
||||
;
|
||||
inic: clr pat
|
||||
mov #1,defspd
|
||||
mov #hdlc,curhdl
|
||||
rts pc
|
||||
;
|
||||
inirr: mov #hdlrr,curhdl
|
||||
mov #6,defspd
|
||||
ininop: rts pc
|
||||
;
|
||||
;
|
||||
; display pattern handlers -----------------------
|
||||
;
|
||||
; RSX-11M style ------------------------
|
||||
; code from RSX-11M V3.1 NULTK.MAC
|
||||
; note: RSX-11M updates every 4 wait fall-thru
|
||||
;
|
||||
hdlr: mov #pat,r1
|
||||
aslb (r1)+
|
||||
rorb (r1)
|
||||
adcb -(r1)
|
||||
rts pc
|
||||
;
|
||||
; 2.11BSD style ------------------------
|
||||
; code from 2.11BSD mch_xxx.s
|
||||
; note: 2.11BSD updates every 2 wait fall-thru
|
||||
;
|
||||
hdlb: clc
|
||||
rol pat
|
||||
bpl 1$
|
||||
bis #1,pat
|
||||
1$: rts pc
|
||||
;
|
||||
; flipper style ------------------------
|
||||
;
|
||||
hdlf: mov #pat,r0
|
||||
tst fdir ; shift direction ?
|
||||
blt 10$ ; if -1 to right
|
||||
|
||||
rol (r0) ; if +1 to left
|
||||
bcc 100$ ; end reached ?
|
||||
ror (r0) ; get bit back
|
||||
ror (r0) ; and shift
|
||||
br 20$
|
||||
|
||||
10$: ror (r0) ; shift right
|
||||
bcc 100$ ; end reached ?
|
||||
rol (r0) ; get bit back
|
||||
rol (r0) ; and shift
|
||||
|
||||
20$: neg fdir ; and switch direction
|
||||
100$: rts pc
|
||||
;
|
||||
; counter style ------------------------
|
||||
;
|
||||
hdlc: inc pat
|
||||
rts pc
|
||||
;
|
||||
; random pattern style -----------------
|
||||
;
|
||||
hdlrr: jsr pc,randzp
|
||||
mov r0,pat
|
||||
rts pc
|
||||
;
|
||||
; code imports
|
||||
;
|
||||
.include |lib/randzp.mac|
|
||||
|
||||
;
|
||||
; data area ------------------------------------------------
|
||||
;
|
||||
acttbl: .word 'r,actsty,inir ; 'r -> use RSX-11M style
|
||||
.word 'b,actsty,inib ; 'b -> use 2.11BSD style
|
||||
.word 'f,actsty,inif ; 'f -> use flipper style
|
||||
.word 'c,actsty,inic ; 'c -> use counter style
|
||||
.word 'R,actsty,inirr ; 'R -> use random number style
|
||||
.word 'a,acta ,ininop ; 'a -> auto: cycle through styles
|
||||
.word 's,acts ,ininop ; 's -> surprise: random styles
|
||||
.word 0
|
||||
;
|
||||
initbl: .word inir
|
||||
.word inib
|
||||
.word inif
|
||||
.word inic
|
||||
.word inirr
|
||||
nstyle = <. - initbl / 2>
|
||||
;
|
||||
defspd: .word 2 ; default speed of style
|
||||
curspd: .word 0 ; current speed
|
||||
curhdl: .word hdlf ; style handler
|
||||
cursty: .word 2 ; current style index
|
||||
;
|
||||
pat: .word 000001 ; display pattern
|
||||
smode: .word 0 ; switching mode
|
||||
styage: .word 0 ; style age
|
||||
;
|
||||
fdir: .word 1
|
||||
|
||||
.end start
|
||||
Loading…
x
Reference in New Issue
Block a user