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.
970 lines
8.9 KiB
970 lines
8.9 KiB
extrn .begin,.chl,.swt
|
|
extrn csave,cret,.move
|
|
global pDPHMAP_,2
|
|
global pDPHVEC_,24
|
|
DSEG
|
|
public pSYSCFG_
|
|
pSYSCFG_:
|
|
DW -16384
|
|
CSEG
|
|
DSEG
|
|
public map_
|
|
map_:
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 1
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 1
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attroff_
|
|
attroff_:
|
|
DB 27
|
|
DB 91
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrbold_
|
|
attrbold_:
|
|
DB 27
|
|
DB 91
|
|
DB 49
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrlow_
|
|
attrlow_:
|
|
DB 27
|
|
DB 91
|
|
DB 50
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrundr_
|
|
attrundr_:
|
|
DB 27
|
|
DB 91
|
|
DB 52
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrblnk_
|
|
attrblnk_:
|
|
DB 27
|
|
DB 91
|
|
DB 53
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrrevs_
|
|
attrrevs_:
|
|
DB 27
|
|
DB 91
|
|
DB 55
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public attrinvs_
|
|
attrinvs_:
|
|
DB 27
|
|
DB 91
|
|
DB 56
|
|
DB 109
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public graphon_
|
|
graphon_:
|
|
DB 27
|
|
DB 70
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public graphoff_
|
|
graphoff_:
|
|
DB 27
|
|
DB 71
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atreset_
|
|
atreset_:
|
|
DB 48
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atbold_
|
|
atbold_:
|
|
DB 49
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atdim_
|
|
atdim_:
|
|
DB 50
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atundrsc_
|
|
atundrsc_:
|
|
DB 52
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atblink_
|
|
atblink_:
|
|
DB 53
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public atrevs_
|
|
atrevs_:
|
|
DB 55
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public athidden_
|
|
athidden_:
|
|
DB 56
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgblack_
|
|
fgblack_:
|
|
DB 51
|
|
DB 48
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgred_
|
|
fgred_:
|
|
DB 51
|
|
DB 49
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fggreen_
|
|
fggreen_:
|
|
DB 51
|
|
DB 50
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgyellow_
|
|
fgyellow_:
|
|
DB 51
|
|
DB 51
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgblue_
|
|
fgblue_:
|
|
DB 51
|
|
DB 52
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgmagent_
|
|
fgmagent_:
|
|
DB 51
|
|
DB 53
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgcyan_
|
|
fgcyan_:
|
|
DB 51
|
|
DB 54
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public fgwhite_
|
|
fgwhite_:
|
|
DB 51
|
|
DB 55
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgblack_
|
|
bgblack_:
|
|
DB 52
|
|
DB 48
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgred_
|
|
bgred_:
|
|
DB 52
|
|
DB 49
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bggreen_
|
|
bggreen_:
|
|
DB 52
|
|
DB 50
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgyellow_
|
|
bgyellow_:
|
|
DB 52
|
|
DB 51
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgblue_
|
|
bgblue_:
|
|
DB 52
|
|
DB 52
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgmagent_
|
|
bgmagent_:
|
|
DB 52
|
|
DB 53
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgcyan_
|
|
bgcyan_:
|
|
DB 52
|
|
DB 54
|
|
DB 0
|
|
CSEG
|
|
DSEG
|
|
public bgwhite_
|
|
bgwhite_:
|
|
DB 52
|
|
DB 55
|
|
DB 0
|
|
CSEG
|
|
PUBLIC dispattr_
|
|
dispattr_: lxi d,.2
|
|
call csave
|
|
LXI H,12-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,12-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,12-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,27
|
|
PUSH H
|
|
LXI H,.1+0
|
|
PUSH H
|
|
CALL printf_
|
|
XCHG
|
|
LXI H,10
|
|
DAD SP
|
|
SPHL
|
|
RET
|
|
.2 EQU 0
|
|
.1:
|
|
DB 37,99,91,37,115,59,37,115,59,37,115,109,0
|
|
PUBLIC main_
|
|
main_: lxi d,.4
|
|
call csave
|
|
LXI H,1
|
|
XCHG
|
|
LXI H,8-.4
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
CALL .lt
|
|
JZ .5
|
|
LXI H,1
|
|
XCHG
|
|
LXI H,2-.4
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .7
|
|
.6:
|
|
LXI H,2-.4
|
|
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
|
|
.7:
|
|
LXI H,2-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,8-.4
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
CALL .lt
|
|
JZ .8
|
|
LXI H,2-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
DAD H
|
|
XCHG
|
|
LXI H,10-.4
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
DAD D
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
CALL atoi_
|
|
POP D
|
|
PUSH H
|
|
LXI H,.3+0
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .6
|
|
.8:
|
|
JMP .9
|
|
.5:
|
|
LXI H,-4096
|
|
SHLD hregbc_
|
|
LXI H,-16384
|
|
SHLD hregde_
|
|
CALL diagnose_
|
|
LXI H,-16384
|
|
SHLD pSYSCFG_
|
|
LHLD pSYSCFG_
|
|
LXI D,68
|
|
DAD D
|
|
MOV E,M
|
|
MVI D,0
|
|
PUSH D
|
|
CALL crtinit_
|
|
POP D
|
|
CALL crtclr_
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,bgblack_
|
|
PUSH H
|
|
LXI H,fggreen_
|
|
PUSH H
|
|
LXI H,atbold_
|
|
PUSH H
|
|
CALL dispattr_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
LXI H,.3+3
|
|
PUSH H
|
|
CALL banner_
|
|
POP D
|
|
LXI H,attroff_
|
|
PUSH H
|
|
LXI H,.3+9
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,bgblack_
|
|
PUSH H
|
|
LXI H,fgcyan_
|
|
PUSH H
|
|
LXI H,atbold_
|
|
PUSH H
|
|
CALL dispattr_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .11
|
|
.10:
|
|
LXI H,-4-.4
|
|
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
|
|
.11:
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16
|
|
CALL .lt
|
|
JZ .12
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
DAD H
|
|
DAD H
|
|
LXI D,9
|
|
DAD D
|
|
PUSH H
|
|
LXI H,6
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,.3+12
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .10
|
|
.12:
|
|
LXI H,attroff_
|
|
PUSH H
|
|
LXI H,.3+17
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,-6-.4
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .14
|
|
.13:
|
|
LXI H,-6-.4
|
|
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,-6-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16
|
|
CALL .lt
|
|
JZ .15
|
|
LXI H,4
|
|
PUSH H
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,7
|
|
DAD D
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,bgblack_
|
|
PUSH H
|
|
LXI H,fgcyan_
|
|
PUSH H
|
|
LXI H,atbold_
|
|
PUSH H
|
|
CALL dispattr_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
LXI H,-6-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,.3+20
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,attroff_
|
|
PUSH H
|
|
LXI H,.3+25
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .17
|
|
.16:
|
|
LXI H,-4-.4
|
|
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
|
|
.17:
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16
|
|
CALL .lt
|
|
JZ .18
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
DAD H
|
|
DAD H
|
|
LXI D,10
|
|
DAD D
|
|
PUSH H
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,7
|
|
DAD D
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,-6-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
DAD H
|
|
DAD H
|
|
DAD H
|
|
DAD H
|
|
XCHG
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
DAD D
|
|
LXI D,map_
|
|
DAD D
|
|
MOV E,M
|
|
MVI D,0
|
|
PUSH D
|
|
LXI H,1
|
|
POP D
|
|
CALL .eq
|
|
JZ .19
|
|
LXI H,.3+28
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
JMP .20
|
|
.19:
|
|
LXI H,-6-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
DAD H
|
|
DAD H
|
|
DAD H
|
|
DAD H
|
|
XCHG
|
|
LXI H,-4-.4
|
|
DAD SP
|
|
MOV A,M
|
|
INX H
|
|
MOV H,M
|
|
MOV L,A
|
|
DAD D
|
|
PUSH H
|
|
LXI H,.3+30
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
.20:
|
|
JMP .16
|
|
.18:
|
|
LXI H,bgblack_
|
|
PUSH H
|
|
LXI H,fgcyan_
|
|
PUSH H
|
|
LXI H,atbold_
|
|
PUSH H
|
|
CALL dispattr_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
LXI H,-6-.4
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
PUSH D
|
|
LXI H,.3+33
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,attroff_
|
|
PUSH H
|
|
LXI H,.3+40
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .13
|
|
.15:
|
|
.9:
|
|
LXI H,0
|
|
RET
|
|
.4 EQU -10
|
|
.3:
|
|
DB 37,99,0,67,72,65,82,83,0,37,115,0,91,37,120
|
|
DB 93,0,37,115,0,91,37,120,93,0,37,115,0,46,0
|
|
DB 37,99,0,32,32,91,37,120,93,0,37,115,0
|
|
extrn atoi_
|
|
extrn printf_
|
|
extrn banner_
|
|
extrn crtlc_
|
|
extrn crtclr_
|
|
extrn crtinit_
|
|
extrn diagnose_
|
|
extrn hregde_
|
|
extrn hregbc_
|
|
extrn .eq
|
|
extrn .lt
|
|
END
|
|
|