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

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