Files
RomWBW/branches/s100/Apps/crossdev/META.ASM
2013-02-16 06:46:44 +00:00

750 lines
9.6 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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