mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
970 lines
8.9 KiB
NASM
970 lines
8.9 KiB
NASM
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
|
||
|