mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
367 lines
3.9 KiB
367 lines
3.9 KiB
extrn .begin,.chl,.swt
|
|
extrn csave,cret,.move
|
|
PUBLIC vdaini_
|
|
vdaini_: lxi d,.2
|
|
call csave
|
|
LXI H,8-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16384
|
|
CALL .or
|
|
SHLD hregbc_
|
|
LXI H,10-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
SHLD hregde_
|
|
LXI H,12-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
SHLD hreghl_
|
|
CALL diagnose_
|
|
LDA hrega_
|
|
MOV L,A
|
|
MVI H,0
|
|
RET
|
|
.2 EQU 0
|
|
PUBLIC bitlook_
|
|
bitlook_: lxi d,.3
|
|
call csave
|
|
LXI H,-32768
|
|
XCHG
|
|
LXI H,2-.3
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,0-.3
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .5
|
|
.4:
|
|
LXI H,0-.3
|
|
DAD SP
|
|
PUSH H
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
INX H
|
|
XCHG
|
|
POP H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
.5:
|
|
LXI H,0-.3
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,256
|
|
CALL .lt
|
|
JZ .6
|
|
LXI H,0-.3
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,.1+0
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,-2-.3
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .8
|
|
.7:
|
|
LXI H,-2-.3
|
|
DAD SP
|
|
PUSH H
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
INX H
|
|
XCHG
|
|
POP H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
.8:
|
|
LXI H,-2-.3
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,8
|
|
CALL .lt
|
|
JZ .9
|
|
LXI H,2-.3
|
|
DAD SP
|
|
PUSH H
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
INX H
|
|
XCHG
|
|
POP H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
XCHG
|
|
DCX H
|
|
MOV E,M
|
|
MVI D,0
|
|
PUSH D
|
|
LXI H,.1+16
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .7
|
|
.9:
|
|
LXI H,.1+24
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
JMP .4
|
|
.6:
|
|
RET
|
|
.3 EQU -6
|
|
.1:
|
|
DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32
|
|
DB 0,48,120,37,48,50,120,32,0,10,0
|
|
PUBLIC vdaqry_
|
|
vdaqry_: lxi d,.11
|
|
call csave
|
|
LXI H,8-.11
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16640
|
|
CALL .or
|
|
SHLD hregbc_
|
|
LXI H,10-.11
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
SHLD hreghl_
|
|
CALL diagnose_
|
|
LDA hrega_
|
|
MOV L,A
|
|
MVI H,0
|
|
RET
|
|
.11 EQU 0
|
|
PUBLIC flip_
|
|
flip_: lxi d,.12
|
|
call csave
|
|
LXI H,-32768
|
|
PUSH H
|
|
LXI H,64
|
|
PUSH H
|
|
CALL vdaqry_
|
|
POP D
|
|
POP D
|
|
XCHG
|
|
LXI H,-3-.12
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
LXI H,-32768
|
|
XCHG
|
|
LXI H,2-.12
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,-1-.12
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .14
|
|
.13:
|
|
LXI H,-1-.12
|
|
DAD SP
|
|
PUSH H
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
INX H
|
|
XCHG
|
|
POP H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
.14:
|
|
LXI H,-1-.12
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,2048
|
|
CALL .lt
|
|
JZ .15
|
|
LXI H,2-.12
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
MOV E,M
|
|
LXI H,1-.12
|
|
DAD SP
|
|
MOV M,E
|
|
LXI H,1-.12
|
|
DAD SP
|
|
MOV E,M
|
|
MVI D,0
|
|
LXI H,255
|
|
CALL .xr
|
|
XCHG
|
|
LXI H,1-.12
|
|
DAD SP
|
|
MOV M,E
|
|
LXI H,1-.12
|
|
DAD SP
|
|
MOV E,M
|
|
PUSH D
|
|
LXI H,4-.12
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
POP D
|
|
MOV M,E
|
|
LXI H,2-.12
|
|
DAD SP
|
|
PUSH H
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
INX H
|
|
XCHG
|
|
POP H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .13
|
|
.15:
|
|
LXI H,-32768
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,64
|
|
PUSH H
|
|
CALL vdaini_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
RET
|
|
.12 EQU -7
|
|
PUBLIC main_
|
|
main_: lxi d,.16
|
|
call csave
|
|
LXI H,1
|
|
XCHG
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
.17:
|
|
LXI H,1
|
|
XCHG
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
CALL .eq
|
|
JZ .18
|
|
LXI H,1
|
|
SHLD dregbc_
|
|
CALL bdoscall_
|
|
LDA drega_
|
|
MOV L,A
|
|
MVI H,0
|
|
JMP .19
|
|
.21:
|
|
CALL flip_
|
|
JMP .20
|
|
.22:
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .20
|
|
.23:
|
|
LXI H,7
|
|
PUSH H
|
|
LXI H,.10+0
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .20
|
|
.19:
|
|
CALL .swt
|
|
DW 2
|
|
DW 3,.22
|
|
DW 102,.21
|
|
DW .23
|
|
.20:
|
|
JMP .17
|
|
.18:
|
|
CALL flip_
|
|
RET
|
|
.16 EQU -2
|
|
.10:
|
|
DB 37,99,0
|
|
extrn printf_
|
|
extrn bdoscall_
|
|
extrn dregbc_
|
|
extrn drega_
|
|
extrn diagnose_
|
|
extrn hreghl_
|
|
extrn hregde_
|
|
extrn hregbc_
|
|
extrn hrega_
|
|
extrn .or
|
|
extrn .xr
|
|
extrn .eq
|
|
extrn .lt
|
|
END
|
|
|