mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:23:13 -06:00
367 lines
3.9 KiB
NASM
367 lines
3.9 KiB
NASM
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
|
||
|