forked from MirrorRepos/RomWBW
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.
750 lines
9.6 KiB
750 lines
9.6 KiB
extrn .begin,.chl,.swt
|
|
extrn csave,cret,.move
|
|
global metadata_,128
|
|
global bRunning_,2
|
|
global deflu_,2
|
|
global drive_,2
|
|
global logunit_,2
|
|
global numlu_,2
|
|
DSEG
|
|
public pSYSCFG_
|
|
pSYSCFG_:
|
|
DW -16384
|
|
CSEG
|
|
PUBLIC display_
|
|
display_: lxi d,.2
|
|
call csave
|
|
LHLD logunit_
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL luscur_
|
|
POP D
|
|
POP D
|
|
LXI H,metadata_
|
|
PUSH H
|
|
LXI H,11
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL rdsector_
|
|
XCHG
|
|
LXI H,8
|
|
DAD SP
|
|
SPHL
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,7
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_
|
|
PUSH H
|
|
LXI H,.1+0
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,8
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LDA metadata_+2
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LXI H,.1+28
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,9
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,.1+56
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .4
|
|
.3:
|
|
LXI H,2-.2
|
|
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
|
|
.4:
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,8
|
|
CALL .lt
|
|
JZ .5
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,metadata_+4
|
|
DAD D
|
|
MOV E,M
|
|
MVI D,0
|
|
PUSH D
|
|
LXI H,.1+79
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .3
|
|
.5:
|
|
LXI H,.1+82
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,10
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LDA metadata_+12
|
|
MOV L,A
|
|
MVI H,0
|
|
LXI D,65
|
|
DAD D
|
|
PUSH H
|
|
LXI H,.1+84
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+13
|
|
XCHG
|
|
LHLD logunit_
|
|
CALL .ne
|
|
JZ .6
|
|
LHLD logunit_
|
|
SHLD metadata_+13
|
|
LHLD metadata_+97
|
|
INX H
|
|
SHLD metadata_+97
|
|
LXI H,metadata_
|
|
PUSH H
|
|
LXI H,11
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL wrsector_
|
|
XCHG
|
|
LXI H,8
|
|
DAD SP
|
|
SPHL
|
|
.6:
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,11
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD numlu_
|
|
PUSH H
|
|
LHLD metadata_+13
|
|
PUSH H
|
|
LXI H,.1+109
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,12
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,.1+150
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LDA metadata_+96
|
|
MOV L,A
|
|
MVI H,0
|
|
JMP .7
|
|
.9:
|
|
LXI H,.1+172
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
JMP .8
|
|
.10:
|
|
LXI H,.1+178
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
JMP .8
|
|
.11:
|
|
LXI H,.1+184
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
JMP .8
|
|
.7:
|
|
CALL .swt
|
|
DW 2
|
|
DW 0,.10
|
|
DW 1,.9
|
|
DW .11
|
|
.8:
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,13
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+97
|
|
PUSH H
|
|
LXI H,.1+190
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,14
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LDA metadata_+101
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LDA metadata_+101
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LDA metadata_+100
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LDA metadata_+99
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LXI H,.1+214
|
|
PUSH H
|
|
CALL printf_
|
|
XCHG
|
|
LXI H,10
|
|
DAD SP
|
|
SPHL
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,15
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,.1+247
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .13
|
|
.12:
|
|
LXI H,2-.2
|
|
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
|
|
.13:
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,16
|
|
CALL .lt
|
|
JZ .14
|
|
LXI H,2-.2
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
LXI H,metadata_+103
|
|
DAD D
|
|
MOV E,M
|
|
MVI D,0
|
|
PUSH D
|
|
LXI H,.1+270
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .12
|
|
.14:
|
|
LXI H,.1+273
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,16
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+120
|
|
PUSH H
|
|
LXI H,.1+275
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,17
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+122
|
|
PUSH H
|
|
LXI H,.1+303
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,18
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+124
|
|
PUSH H
|
|
LXI H,.1+331
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,19
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LHLD metadata_+126
|
|
PUSH H
|
|
LXI H,.1+359
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
RET
|
|
.2 EQU -2
|
|
.1:
|
|
DB 109,101,116,97,100,97,116,97,46,115,105,103,110,97,116
|
|
DB 117,114,101,32,61,32,48,120,37,48,52,120,0,109,101
|
|
DB 116,97,100,97,116,97,46,112,108,97,116,102,111,114,109
|
|
DB 32,32,61,32,48,120,37,48,50,120,0,109,101,116,97
|
|
DB 100,97,116,97,46,102,111,114,109,97,116,116,101,114,32
|
|
DB 61,32,34,0,37,99,0,34,0,109,101,116,97,100,97
|
|
DB 116,97,46,100,114,105,118,101,32,32,32,32,32,61,32
|
|
DB 37,99,58,0,109,101,116,97,100,97,116,97,46,108,111
|
|
DB 103,117,110,105,116,32,32,32,61,32,37,100,40,114,101
|
|
DB 108,48,41,32,111,102,32,37,100,32,32,32,32,32,0
|
|
DB 109,101,116,97,100,97,116,97,46,119,114,105,116,101,112
|
|
DB 114,111,116,32,61,32,0,84,82,85,69,32,0,70,65
|
|
DB 76,83,69,0,85,110,107,33,33,0,109,101,116,97,100
|
|
DB 97,116,97,46,117,112,100,97,116,101,32,32,32,32,61
|
|
DB 32,37,100,0,109,101,116,97,100,97,116,97,46,123,118
|
|
DB 101,114,125,32,32,32,32,32,61,32,37,100,46,37,100
|
|
DB 46,37,100,46,37,100,0,109,101,116,97,100,97,116,97
|
|
DB 46,108,97,98,101,108,32,32,32,32,32,61,32,34,0
|
|
DB 37,99,0,34,0,109,101,116,97,100,97,116,97,46,105
|
|
DB 110,102,108,111,99,32,32,32,32,61,32,48,120,37,48
|
|
DB 52,120,0,109,101,116,97,100,97,116,97,46,99,112,109
|
|
DB 108,111,99,32,32,32,32,61,32,48,120,37,48,52,120
|
|
DB 0,109,101,116,97,100,97,116,97,46,99,112,109,101,110
|
|
DB 100,32,32,32,32,61,32,48,120,37,48,52,120,0,109
|
|
DB 101,116,97,100,97,116,97,46,99,112,109,101,110,116,32
|
|
DB 32,32,32,61,32,48,120,37,48,52,120,0
|
|
PUBLIC menu_
|
|
menu_: lxi d,.16
|
|
call csave
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,21
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,.15+0
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,.15+40
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,21
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
LXI H,.15+80
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,0
|
|
XCHG
|
|
LHLD logunit_
|
|
CALL .lt
|
|
JZ .17
|
|
LXI H,.15+90
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
.17:
|
|
LHLD numlu_
|
|
DCX H
|
|
PUSH H
|
|
LHLD logunit_
|
|
POP D
|
|
XCHG
|
|
CALL .lt
|
|
JZ .18
|
|
LXI H,.15+102
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
.18:
|
|
LDA metadata_+96
|
|
MOV L,A
|
|
MVI H,0
|
|
PUSH H
|
|
LXI H,1
|
|
POP D
|
|
CALL .eq
|
|
JZ .19
|
|
LXI H,.15+114
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
.19:
|
|
lda metadata_+96
|
|
ora a
|
|
JNZ .20
|
|
LXI H,.15+127
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
.20:
|
|
LXI H,.15+138
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
LXI H,1
|
|
SHLD dregbc_
|
|
CALL bdoscall_
|
|
LXI H,1
|
|
XCHG
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
LDA drega_
|
|
MOV L,A
|
|
MVI H,0
|
|
JMP .21
|
|
.23:
|
|
.24:
|
|
LXI H,0
|
|
XCHG
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
JMP .22
|
|
.25:
|
|
LHLD numlu_
|
|
DCX H
|
|
PUSH H
|
|
LHLD logunit_
|
|
POP D
|
|
XCHG
|
|
CALL .lt
|
|
JZ .26
|
|
LHLD logunit_
|
|
INX H
|
|
SHLD logunit_
|
|
JMP .27
|
|
.26:
|
|
LXI H,7
|
|
PUSH H
|
|
LXI H,.15+151
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
.27:
|
|
JMP .22
|
|
.28:
|
|
LXI H,0
|
|
XCHG
|
|
LHLD logunit_
|
|
CALL .lt
|
|
JZ .29
|
|
LHLD logunit_
|
|
DCX H
|
|
SHLD logunit_
|
|
JMP .30
|
|
.29:
|
|
LXI H,7
|
|
PUSH H
|
|
LXI H,.15+154
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
.30:
|
|
JMP .22
|
|
.31:
|
|
LXI H,1
|
|
MOV A,L
|
|
STA metadata_+96
|
|
LHLD metadata_+97
|
|
INX H
|
|
SHLD metadata_+97
|
|
LXI H,metadata_
|
|
PUSH H
|
|
LXI H,11
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL wrsector_
|
|
XCHG
|
|
LXI H,8
|
|
DAD SP
|
|
SPHL
|
|
JMP .22
|
|
.32:
|
|
LXI H,0
|
|
MOV A,L
|
|
STA metadata_+96
|
|
LHLD metadata_+97
|
|
INX H
|
|
SHLD metadata_+97
|
|
LXI H,metadata_
|
|
PUSH H
|
|
LXI H,11
|
|
PUSH H
|
|
LXI H,0
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL wrsector_
|
|
XCHG
|
|
LXI H,8
|
|
DAD SP
|
|
SPHL
|
|
JMP .22
|
|
.33:
|
|
LXI H,7
|
|
PUSH H
|
|
LXI H,.15+157
|
|
PUSH H
|
|
CALL printf_
|
|
POP D
|
|
POP D
|
|
JMP .22
|
|
.21:
|
|
CALL .swt
|
|
DW 6
|
|
DW 43,.25
|
|
DW 45,.28
|
|
DW 88,.23
|
|
DW 112,.31
|
|
DW 117,.32
|
|
DW 120,.24
|
|
DW .33
|
|
.22:
|
|
LXI H,2-.16
|
|
DAD SP
|
|
MOV E,M
|
|
INX H
|
|
MOV D,M
|
|
XCHG
|
|
RET
|
|
.16 EQU -2
|
|
.15:
|
|
DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
|
|
DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
|
|
DB 32,32,32,32,32,32,32,32,32,0,32,32,32,32,32
|
|
DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
|
|
DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
|
|
DB 32,32,32,32,0,79,112,116,105,111,110,115,40,32,0
|
|
DB 32,45,123,112,114,101,118,32,108,117,125,0,32,43,123
|
|
DB 110,101,120,116,32,108,117,125,0,32,117,123,110,112,114
|
|
DB 111,116,101,99,116,125,0,32,112,123,114,111,116,101,99
|
|
DB 116,125,0,32,120,123,113,117,105,116,125,32,41,58,32
|
|
DB 0,37,99,0,37,99,0,37,99,0
|
|
PUBLIC main_
|
|
main_: lxi d,.35
|
|
call csave
|
|
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,.34+0
|
|
PUSH H
|
|
CALL banner_
|
|
POP D
|
|
LXI H,25
|
|
SHLD dregbc_
|
|
CALL bdoscall_
|
|
LDA drega_
|
|
MOV L,A
|
|
MVI H,0
|
|
SHLD drive_
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL lugnum_
|
|
POP D
|
|
SHLD numlu_
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL lugcur_
|
|
POP D
|
|
SHLD deflu_
|
|
LHLD deflu_
|
|
SHLD logunit_
|
|
LXI H,1
|
|
SHLD bRunning_
|
|
.36:
|
|
LXI H,1
|
|
XCHG
|
|
LHLD bRunning_
|
|
CALL .eq
|
|
JZ .37
|
|
CALL display_
|
|
LXI H,1
|
|
PUSH H
|
|
CALL menu_
|
|
POP D
|
|
SHLD bRunning_
|
|
JMP .36
|
|
.37:
|
|
LHLD deflu_
|
|
PUSH H
|
|
LHLD drive_
|
|
PUSH H
|
|
CALL luscur_
|
|
POP D
|
|
POP D
|
|
LXI H,0
|
|
PUSH H
|
|
LXI H,23
|
|
PUSH H
|
|
CALL crtlc_
|
|
POP D
|
|
POP D
|
|
RET
|
|
.35 EQU 0
|
|
.34:
|
|
DB 77,69,84,65,0
|
|
extrn banner_
|
|
extrn printf_
|
|
extrn lugnum_
|
|
extrn luscur_
|
|
extrn lugcur_
|
|
extrn crtlc_
|
|
extrn crtclr_
|
|
extrn crtinit_
|
|
extrn diagnose_
|
|
extrn hregde_
|
|
extrn hregbc_
|
|
extrn wrsector_
|
|
extrn rdsector_
|
|
extrn bdoscall_
|
|
extrn dregbc_
|
|
extrn drega_
|
|
extrn .eq
|
|
extrn .ne
|
|
extrn .lt
|
|
END
|
|
|