1
0
mirror of https://github.com/rzzzwilson/pymlac.git synced 2025-06-10 09:32:41 +00:00
2015-05-20 19:02:17 +07:00

731 lines
12 KiB
NASM
Executable File

;-------------------------------
; Test of display processor instructions
; Display characters on screen.
;-------------------------------
org 0100 ;
;
dof ;
law dend ;
dac nddisp ;
lwc 20 ;
dac newscr ;
lwc 40 ; one second counter
dac count ;
loop ssf ; wait until 40 Hz sync is set
jmp .-1 ;
scf ; clear 40Hz flag
dsn ; wait until display is off
jmp .-1 ;
isz count ;
jmp .+2 ;
jms another ;
law display ; start display
dla ;
don ;
jmp loop ; keep going
;-------------------------------
hbit data 0100000 ; high bit mask
count data 0 ; 40Hz counter
char data 040 ; char to write
lchar data 0177 ; last char
idsts dsts 0 ;
idlxa dlxa 0 ;
idlya dlya 0 ;
idjms djms dsub ;
idhlt dhlt ;
idnop dnop ;
incy data 0020 ;
curry data 01740 ;
nddisp data 0 ;start as dend
newscr data 0 ;
;-------------------------------
; Routine to add another line to display.
;-------------------------------
another nop ;
isz newscr ;
jmp .+2 ;
jms clear ;
lwc 20 ; half second counter
dac count ;
lac curry ;
sub incy ;
dac curry ;
lwc 1 ;
add nddisp ;
dac 010 ;
lac idlxa ;
dac *010 ;
lac idlya ;
ior curry ;
dac *010 ;
lac idjms ;
dac *010 ;
lac idhlt ;
dac *010 ;
law 3 ;
add nddisp ;
dac nddisp ;
jmp *another ;
;-------------------------------
; Routine to clear the screen.
;-------------------------------
clear nop ;
lwc 20 ;
dac newscr ;
lac idhlt ;
dac dend ;
law dend ;
dac nddisp ;
law 01740 ;
dac curry ;
jmp *clear ;
;-------------------------------
; Short vector characters
;-------------------------------
space inc e,F ; space
exclam inc e,D30 ; !
inc B00,D02 ;
inc B03,02 ;
inc B02,F ;
dquote inc E,D23 ; "
inc 03,B0-1 ;
inc -10,01 ;
inc 13,D30 ;
inc B-1-3,0-1 ;
inc 10,01 ;
inc F,F ;
hash inc e,B13 ; #
inc 13,13 ;
inc D30,B-1-3 ;
inc -1-3,-1-3 ;
inc D23,B-30 ;
inc -30,D13 ;
inc B30,30 ;
inc F,F ;
dollar inc e,D3-2 ; $
inc B03,03 ;
inc 03,03 ;
inc D3-2,B-30 ;
inc -3-2,3-2 ;
inc 3-2,-3-2 ;
inc -30,F ;
percent inc e,D20 ; %
inc B13,21 ;
inc 1-2,-2-1 ;
inc -12,02 ;
inc -12,-2-1 ;
inc 1-2,21 ;
inc 12,12 ;
inc F,F ;
amp inc e,D30 ; &
inc 30,B-33 ;
inc -23,12 ;
inc 10,1-2 ;
inc -2-2,-2-1 ;
inc 0-2,2-1 ;
inc 20,23 ;
inc F,F ;
quote inc e,D23 ; '
inc 03,B0-1 ;
inc 10,01 ;
inc -13,F ;
lparen inc e,D30 ; (
inc B-11,-12 ;
inc 02,12 ;
inc 11,F ;
rparen inc e,D20 ; )
inc B11,12 ;
inc 02,-12 ;
inc -11,F ;
star inc e,D03 ; *
inc B32,32 ;
inc D-31,B0-3 ;
inc 0-3,D31 ;
inc B-32,-32 ;
inc F,F ;
plus inc e,D31 ; +
inc B03,03 ;
inc D-3-3,B30 ;
inc 30,F ;
comma inc e,D2-2 ; ,
inc B13,01 ;
inc -10,0-1 ;
inc F,F ;
minus inc e,D13 ; -
inc B30,30 ;
inc F,F ;
dot inc e,D30 ; .
inc B00,F ;
slash inc e,D20 ; /
inc B13,13 ;
inc 13,F ;
zero inc e,D12 ; 0
inc B02,02 ;
inc 22,2-2 ;
inc 0-2,0-2 ;
inc -2-2,-22 ;
inc F,F ;
one inc e,D10 ; 1
inc B20,20 ;
inc D-20,B03 ;
inc 03,02 ;
inc -2-2,F ;
two inc e,D03 ; 2
inc 03,b22 ;
inc 20,2-2 ;
inc -1-2,-2-1 ;
inc -3-3,30 ;
inc 30,F ;
three inc e,B30 ; 3
inc 32,-22 ;
inc -30,D30 ;
inc B22,-22 ;
inc -30,F ;
four inc e,D30 ; 4
inc 10,B03 ;
inc 03,02 ;
inc -3-3,-1-2 ;
inc 30,30 ;
inc F,F ;
five inc e,B30 ; 5
inc 31,02 ;
inc -32,-30 ;
inc 03,30 ;
inc 30,F ;
six inc e,D03 ; 6
inc B21,20 ;
inc 2-2,-2-2 ;
inc -20,-22 ;
inc 03,23 ;
inc 20,2-2 ;
inc F,F ;
seven inc e,B23 ; 7
inc 33,12 ;
inc -30,-30 ;
inc F,F ;
eight inc e,D20 ; 8
inc B20,21 ;
inc 02,-31 ;
inc -32,22 ;
inc 20,2-2 ;
inc -3-2,-3-1 ;
inc 0-2,2-1 ;
inc F,F ;
nine inc e,D2-1 ; 9
inc B23,13 ;
inc 03,-30 ;
inc -2-2,2-2 ;
inc 20,F ;
colon inc e,D32 ; :
inc B00,D03 ;
inc 01,B00 ;
inc F,F ;
semcol inc e,D2-2 ; ;
inc B13,01 ;
inc -10,10 ;
inc D03,01 ;
inc B-10,F ;
lt inc e,D31 ; <
inc 30,B-21 ;
inc -21,-21 ;
inc 21,21 ;
inc 21,F ;
equal inc e,D13 ; =
inc B30,30 ;
inc D02,B-30 ;
inc -30,F ;
gt inc e,D01 ; >
inc B21,21 ;
inc 21,-21 ;
inc -21,-21 ;
inc F,F ;
query inc e,D30 ; ?
inc B00,D02 ;
inc B02,22 ;
inc -12,-20 ;
inc -1-2,F ;
at inc e,D30 ; @
inc B-31,02 ;
inc 02,22 ;
inc 30,1-3 ;
inc -1-2,-30 ;
inc 02,20 ;
inc 0-2,F ;
uppera inc e,B13 ; A
inc 13,12 ;
inc 1-3,1-3 ;
inc 1-2,D-23 ;
inc B-30,F ;
upperb inc e,B03 ; B
inc 03,02 ;
inc 30,2-1 ;
inc 0-2,-2-1 ;
inc -30,D30 ;
inc B3-1,0-2 ;
inc -3-1,-30 ;
inc F,F ;
upperc inc e,D32 ; C
inc 30,B-2-2 ;
inc -20,-22 ;
inc 03,23 ;
inc 20,2-2 ;
inc F,F ;
upperd inc e,B03 ; D
inc 03,02 ;
inc 30,2-1 ;
inc 1-2,0-2 ;
inc -1-2,-2-1 ;
inc -30,F ;
uppere inc e,B03 ; E
inc 03,02 ;
inc 30,30 ;
inc D-1-2,-1-2 ;
inc B-20,-20 ;
inc D0-2,0-2 ;
inc B30,30 ;
inc F,F ;
upperf inc e,B03 ; F
inc 02,30 ;
inc D-30,B03 ;
inc 30,30 ;
inc F,F ;
upperg inc e,D33 ; G
inc B30,-1-3 ;
inc -30,-23 ;
inc 03,32 ;
inc 3-1,F ;
upperh inc e,B03 ; H
inc 03,02 ;
inc D0-3,0-1 ;
inc B30,30 ;
inc Y,B03 ;
inc 03,02 ;
inc Y,F ;
upperi inc e,B30 ; I
inc 30,D-31 ;
inc B03,03 ;
inc D-31,B30 ;
inc 30,F ;
upperj inc e,D02 ; J
inc B2-2,20 ;
inc 22,03 ;
inc 03,F ;
upperk inc e,B03 ; K
inc 03,02 ;
inc D0-3,0-1 ;
inc B32,32 ;
inc Y,B-13 ;
inc -23,F ;
upperl inc e,B03 ; L
inc 03,02 ;
inc Y,B30 ;
inc 30,F ;
upperm inc e,B03 ; M
inc 03,02 ;
inc 3-3,33 ;
inc 0-3,0-3 ;
inc 0-2,F ;
uppern inc e,B03 ; N
inc 03,02 ;
inc 2-3,2-3 ;
inc 2-2,03 ;
inc 03,02 ;
inc F,F ;
uppero inc e,D10 ; O
inc B20,20 ;
inc 13,02 ;
inc -13,-20 ;
inc -20,-1-3 ;
inc 0-2,1-3 ;
inc F,F ;
upperp inc e,B03 ; P
inc 03,02 ;
inc 30,3-1 ;
inc 0-2,-3-1 ;
inc -30,F ;
upperq inc e,D10 ; Q
inc B30,23 ;
inc 03,-12 ;
inc -30,-2-3 ;
inc 0-3,1-2 ;
inc D33,B3-3 ;
inc F,F ;
upperr inc e,B03 ; R
inc 03,02 ;
inc 30,3-1 ;
inc 0-2,-3-1 ;
inc -30,D30 ;
inc B2-2,1-2 ;
inc F,F ;
uppers inc e,D01 ; S
inc B2-1,30 ;
inc 13,-31 ;
inc -31,13 ;
inc 30,2-1 ;
inc F,F ;
uppert inc e,D30 ; T
inc B03,03 ;
inc 02,X ;
inc B30,30 ;
inc F,F ;
upperu inc e,D03 ; U
inc 03,02 ;
inc B0-3,0-3 ;
inc 2-2,20 ;
inc 22,03 ;
inc 03,F ;
upperv inc e,D03 ; V
inc 03,02 ;
inc B1-2,1-3 ;
inc 1-3,12 ;
inc 13,13 ;
inc F,F ;
upperw inc e,B03 ; W
inc 03,02 ;
inc Y,B33 ;
inc 3-3,03 ;
inc 03,02 ;
inc F,F ;
upperx inc e,B23 ; X
inc 22,23 ;
inc Y,B-23 ;
inc -22,-23 ;
inc F,F ;
uppery inc e,D30 ; Y
inc B02,03 ;
inc 33,X ;
inc B3-3,F ;
upperz inc e,D30 ; Z
inc 30,B-30 ;
inc -30,23 ;
inc 22,23 ;
inc -30,-30 ;
inc F,F ;
lsquare inc e,D30 ; [
inc 10,B-20 ;
inc 03,03 ;
inc 02,20 ;
inc F,F ;
slosh inc e,D30 ; \
inc 10,B-13 ;
inc -13,-12 ;
inc F,F ;
rsquare inc e,D20 ; ]
inc B20,03 ;
inc 03,02 ;
inc -20,F ;
hat inc e,D30 ; ^
inc B03,03 ;
inc 02,-1-2 ;
inc -2-2,31 ;
inc 3-1,-22 ;
inc -12,F ;
unders inc e,D-2-2 ; _
inc B30,30 ;
inc 20,20 ;
inc D-23,F ;
bquote inc e,D13 ; `
inc 03,B-22 ;
inc D3-3,3-3 ;
inc F,F ;
lowera inc e,D03 ; a
inc 03,B30 ;
inc 2-2,-1-3 ;
inc 2-1,D-21 ;
inc B-3-1,-12 ;
inc 21,20 ;
inc F,F ;
lowerb inc e,B03 ; b
inc 03,03 ;
inc Y,D02 ;
inc B3-2,21 ;
inc 03,-22 ;
inc -3-2,F ;
lowerc inc e,D32 ; c
inc 20,B-2-2 ;
inc -20,-12 ;
inc 02,22 ;
inc 3-1,F ;
lowerd inc e,D33 ; d
inc 21,B-32 ;
inc -2-2,0-3 ;
inc 2-1,32 ;
inc d0-2,b03 ;
inc 03,03 ;
inc F,F ;
lowere inc e,D13 ; e
inc B20,20 ;
inc -23,-20 ;
inc -1-2,0-3 ;
inc 2-1,30 ;
inc F,F ;
lowerf inc e,D20 ; f
inc B03,03 ;
inc 22,2-1 ;
inc D-1-2,B-30 ;
inc -20,F ;
lowerg inc e,D0-2 ; g
inc B3-1,22 ;
inc 02,03 ;
inc -32,-2-2 ;
inc 0-3,2-1 ;
inc 32,F ;
lowerh inc e,B03 ; h
inc 03,03 ;
inc D1-3,B20 ;
inc 1-3,0-3 ;
inc F,F ;
loweri inc e,D30 ; i
inc B03,03 ;
inc D02,B00 ;
inc F,F ;
lowerj inc e,B1-2 ; j
inc 20,12 ;
inc 03,03 ;
inc D02,B00 ;
inc F,F ;
lowerk inc e,B03 ; k
inc 03,03 ;
inc D3-2,B-3-3 ;
inc 3-1,2-3 ;
inc F,F ;
lowerl inc e,D30 ; l
inc B-11,03 ;
inc 02,02 ;
inc F,F ;
lowerm inc e,B03 ; m
inc 03,D0-2 ;
inc B22,1-2 ;
inc 22,1-2 ;
inc 0-2,0-2 ;
inc D-30,B03 ;
inc F,F ;
lowern inc e,B03 ; n
inc 03,D0-2 ;
inc B32,2-3 ;
inc 0-3,F ;
lowero inc e,D10 ; o
inc B20,22 ;
inc 02,-12 ;
inc -20,-2-2 ;
inc 0-2,1-2 ;
inc F,F ;
lowerp inc e,D0-2 ; p
inc B03,03 ;
inc 03,D0-1 ;
inc B30,1-2 ;
inc -1-2,-30 ;
inc F,F ;
lowerq inc e,D32 ; q
inc 20,b-3-2 ;
inc -21,03 ;
inc 22,3-2 ;
inc 0-3,0-2 ;
inc 0-2,A0173 ;
lowerr inc e,B03 ; r
inc 03,D0-3 ;
inc B22,31 ;
inc F,F ;
lowers inc e,D01 ; s
inc B3-1,22 ;
inc -21,-31 ;
inc 22,3-1 ;
inc F,F ;
lowert inc e,D30 ; t
inc B-11,03 ;
inc 02,02 ;
inc D-2-2,B20 ;
inc 20,F ;
loweru inc e,D03 ; u
inc 03,B0-2 ;
inc 0-2,1-2 ;
inc 20,22 ;
inc 02,02 ;
inc Y,D02 ;
inc B1-2,F ;
lowerv inc e,D03 ; v
inc 03,B2-3 ;
inc 1-3,13 ;
inc 13,F ;
lowerw inc e,D03 ; w
inc 03,B1-3 ;
inc 1-3,13 ;
inc 1-3,1+3 ;
inc 13,F ;
lowerx inc e,B23 ; x
inc 33,D-20 ;
inc -30,B3-3 ;
inc 2-3,F ;
lowery inc e,D1-3 ; y
inc B23,23 ;
inc 03,X ;
inc B1-3,2-3 ;
inc F,F ;
lowerz inc e,B30 ; z
inc 20,A011 ;
inc B23,33 ;
inc -30,-20 ;
inc F,F ;
lcurl inc e,D33 ; {
inc 03,B-20 ;
inc 1-3,-10 ;
inc D10,B-1-3 ;
inc 20,F ;
pipe inc e,D33 ; |
inc 03,01 ;
inc B0-3,D0-2 ;
inc B0-3,A0173 ;
rcurl inc e,D13 ; }
inc 03,B20 ;
inc -1-3,10 ;
inc D-10,B1-3 ;
inc -20,F ;
tilde inc e,D03 ; ~
inc B12,1-2 ;
inc 1-2,12 ;
inc F,F ;
del inc e,B+0+3 ; DEL (filled box)
inc B+0+3,B+1+0 ;
inc B+0-3,B+0-3 ;
inc B+1+0,B+0+3 ;
inc B+0+3,B+1+0 ;
inc B+0-3,B+0-3 ;
inc B+1+0,B+0+3 ;
inc B+0+3,F ;
cursn inc e,b03 ;
inc 03,30 ;
inc 30,0-3 ;
inc 0-3,-30 ;
inc -30,d11 ;
inc b02,02 ;
inc 20,20 ;
inc 0-2,0-2 ;
inc -30,03 ;
inc 20,0-2 ;
inc -10,01 ;
inc f,f ;
curso inc e,b03 ;
inc 03,30 ;
inc 30,0-3 ;
inc 0-3,-30 ;
inc -30,f ;
newline ddym ;
dlxa 0 ;
drjm ;
;-------------------------------
; Display list subroutine - show all ASCII chars
;-------------------------------
dsub djms space ;
djms exclam ;
djms dquote ;
djms hash ;
djms dollar ;
djms percent ;
djms amp ;
djms quote ;
djms lparen ;
djms rparen ;
djms star ;
djms plus ;
djms comma ;
djms minus ;
djms dot ;
djms slash ;
djms zero ;
djms one ;
djms two ;
djms three ;
djms four ;
djms five ;
djms six ;
djms seven ;
djms eight ;
djms nine ;
djms colon ;
djms semcol ;
djms lt ;
djms equal ;
djms gt ;
djms query ;
djms at ;
; djms newline ;
djms lsquare ;
djms slosh ;
djms rsquare ;
djms hat ;
djms unders ;
djms bquote ;
djms lcurl ;
djms pipe ;
djms rcurl ;
djms tilde ;
djms del ;
djms curso ;
; djms newline ;
djms lowera ;
djms lowerb ;
djms lowerc ;
djms lowerd ;
djms lowere ;
djms lowerf ;
djms lowerg ;
djms lowerh ;
djms loweri ;
djms lowerj ;
djms lowerk ;
djms lowerl ;
djms lowerm ;
djms lowern ;
djms lowero ;
djms lowerp ;
djms lowerq ;
djms lowerr ;
djms lowers ;
djms lowert ;
djms loweru ;
djms lowerv ;
djms lowerw ;
djms lowerx ;
djms lowery ;
djms lowerz ;
; djms newline ;
djms uppera ;
djms upperb ;
djms upperc ;
djms upperd ;
djms uppere ;
djms upperf ;
djms upperg ;
djms upperh ;
djms upperi ;
djms upperj ;
djms upperk ;
djms upperl ;
djms upperm ;
djms uppern ;
djms uppero ;
djms upperp ;
djms upperq ;
djms upperr ;
djms uppers ;
djms uppert ;
djms upperu ;
djms upperv ;
djms upperw ;
djms upperx ;
djms uppery ;
djms upperz ;
djms cursn ;
; djms newline ;
drjm ;
;-------------------------------
; Display list. Dynamically added to every second.
;-------------------------------
display dsts 1 ;
dlxa 0 ;
dlya 01740 ;
djms dsub ;
dend dhlt ;
;-------------------------------
end ;