mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
743 lines
12 KiB
NASM
743 lines
12 KiB
NASM
;---------------------------------------------------------------
|
|
;Rev Date Name Decription
|
|
;---------------------------------------------------------------
|
|
;R04 25-03-2023 BAO ; !FIXIT
|
|
;R03 23-01-2000 DNS OPTIMIZE NEW BOOTING PROCEDURE
|
|
;R02 08-01-2000 DNS NEW BOOTING PROCEDURE
|
|
;R01 25-05-1998 DNS Console printing
|
|
;R00 09-11-1998 DNS Color printing start message
|
|
; Install CGA palette
|
|
; +------------------------------+
|
|
; + System Bootstrap +
|
|
; + Initial revision 09 Nov 1998 +
|
|
; +------------------------------+
|
|
|
|
DEFINE ORIGINAL_DSS 0
|
|
DEFINE UNIVERSAL_BOOT 1
|
|
|
|
DISP #8000
|
|
|
|
OUTPUT 'build/DSSloader.bin'
|
|
|
|
ADRIVE EQU #00
|
|
CDRIVE EQU #02
|
|
|
|
|
|
|
|
DRIVE: _mSYSID
|
|
DI
|
|
LD (DRIVE),A
|
|
LD C,BIOS.EXT_VERSION
|
|
RST ToBIOS_18
|
|
LD A,INCORR
|
|
JR C,FAIL
|
|
LD A,(DRIVE)
|
|
BIT 7,A
|
|
JR Z,GOOD_DRIVE
|
|
EX DE,HL
|
|
LD DE,#0215 ; ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
|
SBC HL,DE
|
|
LD A,INCORR
|
|
JR C,FAIL
|
|
GOOD_DRIVE:
|
|
LD DE,#8200
|
|
LD HL,0
|
|
LD IX,2
|
|
LD BC,2*256 + BIOS.DRV_READ
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
JR C,NULL
|
|
JP CONTINU
|
|
|
|
FAIL CALL MESSAGE
|
|
NULL LD A,FAILURE
|
|
CALL MESSAGE
|
|
DI
|
|
HALT
|
|
JR $
|
|
|
|
FMESAGE LD HL,MSG0
|
|
LD BC,MSGE-MSG0
|
|
INC A
|
|
EX AF,AF'
|
|
XOR A
|
|
EX AF,AF'
|
|
NEXTMSG EX AF,AF'
|
|
CPIR
|
|
RET PO
|
|
RET NZ
|
|
EX AF,AF'
|
|
DEC A
|
|
JR NZ,NEXTMSG
|
|
RET
|
|
|
|
MESSAGE CALL FMESAGE
|
|
JR PRINTZ
|
|
|
|
;R01 Start
|
|
PRINTZ LD A,(HL) ;R01
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
CALL PRINTX
|
|
JR PRINTZ
|
|
|
|
PRINTX CP #0D
|
|
JR Z,CR_
|
|
CP #0A
|
|
JR Z,LF_
|
|
LD BC,1*256 + BIOS.LP_PRINT_SYM
|
|
RST ToBIOS_18
|
|
RET
|
|
CR_ LD C,BIOS.LP_GET_PLACE
|
|
RST ToBIOS_18
|
|
LD E,0
|
|
LD C,#84
|
|
RST ToBIOS_18
|
|
RET
|
|
LF_ LD C,BIOS.LP_GET_PLACE
|
|
RST ToBIOS_18
|
|
LD A,#1F
|
|
CP D
|
|
JR NZ,LF2
|
|
PUSH DE
|
|
PUSH HL
|
|
LD DE,#0020
|
|
LD BC,1*256 + BIOS.LP_SCROLL_UD
|
|
RST ToBIOS_18
|
|
LD DE,#1F00
|
|
LD C,BIOS.LP_SET_PLACE
|
|
RST ToBIOS_18
|
|
LD A," "
|
|
LD BC,#50 + BIOS.LP_PRINT_SYM
|
|
RST ToBIOS_18
|
|
POP HL
|
|
POP DE
|
|
DEC D
|
|
LF2 INC D
|
|
LD C,BIOS.LP_SET_PLACE
|
|
RST ToBIOS_18
|
|
RET ;R01
|
|
;R01 End
|
|
|
|
FAILURE EQU 0
|
|
INCORR EQU 1
|
|
ERRPART EQU 2
|
|
ERRIBPB EQU 3
|
|
NO_SYS EQU 4
|
|
NOSHELL EQU 5
|
|
STARTDO EQU 6
|
|
;a BIOS version that is incompatible with this version of DOS
|
|
; 0 10 20 30 40 50 60 70 80
|
|
MSG0: DB 0
|
|
DB 13,10,"The system has been halted. Press RESET to restart your computer.",13,10,0
|
|
DB 13,10,"You started your computer with a BIOS version that is incompatible with this",13,10,0
|
|
DB "version of DSS. Please update BIOS to run this version of DSS.",13,10,0
|
|
DB "Invalid partition table.",13,10,0
|
|
DB "Invalid BOOT sector.",13,10,0
|
|
DB "Can't open file SYSTEM.DOS ...",13,10,0
|
|
DB 13,10,"Starting DSS... ",13,10,13,10,0
|
|
MSGE DB 0
|
|
|
|
CONTINU
|
|
LD HL,0
|
|
LD (DISKL),HL
|
|
LD (DISKH),HL
|
|
|
|
LD BC,1*256 + BIOS.GetMem
|
|
RST ToBIOS_18 ;GET PAGE FOR DOS
|
|
LD (BANKDOS),A
|
|
CALL GET_BPB ;READ BPB
|
|
LD A,ERRIBPB
|
|
JP C,FAIL
|
|
CALL GETROOT
|
|
LD A,NO_SYS
|
|
JP C,FAIL
|
|
|
|
LD HL,(FCLUSTR)
|
|
LD DE,#C000
|
|
CALL FLOAD
|
|
DI
|
|
XOR A
|
|
OUT (SYS_PORT.OFF),A
|
|
|
|
LD A,#10
|
|
LD BC,#7FFD
|
|
OUT (C),A
|
|
|
|
LD A,1
|
|
LD B,#1F ;1FFD
|
|
OUT (C),A
|
|
|
|
LD A,(BANKDOS)
|
|
OUT (SLOT0),A
|
|
|
|
;DOS LOADED
|
|
IF UNIVERSAL_BOOT
|
|
|
|
LD A,(DRIVE)
|
|
LD C,#00
|
|
RST #10
|
|
jp c,XFAIL
|
|
|
|
LD A,STARTDO
|
|
CALL DOSMESS
|
|
|
|
LD A,(DRIVE)
|
|
LD B,1
|
|
LD C,Dss.BootDSK
|
|
RST #10
|
|
|
|
LD B,0
|
|
ELSE
|
|
|
|
IF ORIGINAL_DSS
|
|
LD C,#00
|
|
RST #10
|
|
ELSE
|
|
LD A,(DRIVE)
|
|
LD C,#00
|
|
RST #10
|
|
jp c,XFAIL
|
|
ENDIF
|
|
|
|
LD A,STARTDO
|
|
CALL DOSMESS
|
|
|
|
IF ORIGINAL_DSS
|
|
LD A,(DRIVE)
|
|
LD B,1
|
|
LD C,Dss.BootDSK
|
|
RST #10
|
|
|
|
LD B,0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
LD C,Dss.BootDSK
|
|
RST #10
|
|
|
|
ADD A,"A"
|
|
|
|
LD HL,ROOT
|
|
LD (HL),A
|
|
LD C,Dss.ChDir
|
|
RST #10
|
|
|
|
LD HL,PSHELL
|
|
LD BC,Dss.Exec
|
|
RST #10
|
|
LD A,NOSHELL
|
|
JP XFAIL
|
|
|
|
PSHELL: DB '\SYSTEM.EXE /P',0
|
|
ROOT: DB 'X:\',0
|
|
|
|
DOSMESS CALL FMESAGE
|
|
LD C,Dss.PChars
|
|
RST #10
|
|
RET
|
|
|
|
XFAIL CALL DOSMESS
|
|
LD A,FAILURE
|
|
CALL DOSMESS
|
|
DI
|
|
HALT
|
|
.halt JR .halt
|
|
|
|
PART_TB PUSH BC
|
|
LD HL,(BOOT+510)
|
|
LD DE,#AA55
|
|
AND A
|
|
SBC HL,DE
|
|
JR NZ,ERRP
|
|
LD IX,BOOT+#01BE
|
|
LD B,4
|
|
DOSAGA LD A,(IX+4)
|
|
CP #0E
|
|
JR Z,YEPDOS
|
|
CP 6
|
|
JR Z,YEPDOS
|
|
CP 4
|
|
JR Z,YEPDOS
|
|
CP 1
|
|
JR Z,YEPDOS
|
|
LD DE,#10
|
|
; ®è¨¡ª ¢ ®à¨£¨ «¥
|
|
; ADD IY,DE
|
|
ADD IX,DE
|
|
DJNZ DOSAGA
|
|
ERRP LD A,ERRPART
|
|
JP FAIL
|
|
|
|
YEPDOS LD E,(IX+08)
|
|
LD D,(IX+09)
|
|
LD L,(IX+10)
|
|
LD H,(IX+11)
|
|
LD XH,D
|
|
LD XL,E
|
|
LD (DISKL),IX
|
|
LD (DISKH),HL
|
|
LD DE,BOOT
|
|
LD BC,1*256 + BIOS.DRV_READ
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
POP BC
|
|
LD A,C
|
|
RET
|
|
|
|
SET_PRM PUSH BC
|
|
LD A,B
|
|
LD C,BIOS.DRV_GET_PAR
|
|
RST ToBIOS_18
|
|
LD A,(BOOT.S_P_T)
|
|
LD L,A
|
|
POP AF
|
|
PUSH AF
|
|
LD C,BIOS.DRV_SET_PAR
|
|
RST ToBIOS_18
|
|
POP BC
|
|
LD A,C
|
|
RET
|
|
|
|
GET_BPB LD IX,#0000
|
|
LD HL,#0000
|
|
LD DE,BOOT
|
|
LD BC,1*256 + BIOS.DRV_READ
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
RET C
|
|
LD A,(DRIVE)
|
|
LD B,A
|
|
AND #F0
|
|
LD C,A
|
|
CP #80
|
|
JR NZ,NX1
|
|
CALL PART_TB ;HDD
|
|
RET C
|
|
NX1 CP #00
|
|
JR NZ,NX2
|
|
CALL SET_PRM ;FDD
|
|
NX2: LD HL,(BOOT+510)
|
|
LD DE,#AA55
|
|
AND A
|
|
SBC HL,DE
|
|
SCF
|
|
RET NZ
|
|
LD IY,BOOT ;Analysing Block Parametr BIOS
|
|
LD A,(IY+_sBOOT_SEC.ID_FORM)
|
|
CP #F0
|
|
RET C
|
|
LD HL,0 ;calc. first sector FAT
|
|
LD (DIR_FRH),HL
|
|
|
|
LD E,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
|
|
LD D,(IY+_sBOOT_SEC.RESERVE+1)
|
|
ADD HL,DE
|
|
LD (FAT_FRM),HL ;first sector FAT
|
|
LD E,(IY+_sBOOT_SEC.S_P_F) ;sectors in FAT
|
|
LD D,(IY+_sBOOT_SEC.S_P_F+1)
|
|
LD A,(BOOT.FAT_NUM) ;amount FATs
|
|
C_DATA1 ADD HL,DE
|
|
DEC A
|
|
JR NZ,C_DATA1
|
|
LD (DIR_FRM),HL ;first sector DIR
|
|
EX DE,HL
|
|
LD L,(IY+_sBOOT_SEC.F_P_DIR) ;Number file handel
|
|
LD H,(IY+_sBOOT_SEC.F_P_DIR+1)
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
LD A,H
|
|
SRL A
|
|
LD (DIR_S_S),A ;Sectors per dir
|
|
LD L,A
|
|
LD H,0
|
|
ADD HL,DE
|
|
LD (DAT_FRM),HL ;First sector data
|
|
|
|
LD C,(IY+_sBOOT_SEC.B_P_S) ;Size sector
|
|
LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
|
LD HL,0
|
|
LD A,(BOOT.S_P_C)
|
|
NEXTAD3
|
|
ADD HL,BC ;calc. cluster size
|
|
DEC A
|
|
JR NZ,NEXTAD3
|
|
LD (CLU_LEN),HL
|
|
|
|
LD HL,BOOT.ID_FAT
|
|
LD DE,FATMSG
|
|
LD B,3
|
|
R_BPBL1
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JP NZ,IBMDOS_
|
|
INC HL
|
|
INC DE
|
|
DJNZ R_BPBL1
|
|
FID LD A,(HL)
|
|
INC HL
|
|
CP #20
|
|
JR Z,FID
|
|
CP "1"
|
|
SCF
|
|
RET NZ
|
|
LD A,(HL)
|
|
CP "6" ; FAT16
|
|
LD HL,#FFFF
|
|
JR Z,BPB_FAT
|
|
CP "2" ; FAT12
|
|
SCF
|
|
RET NZ
|
|
LD HL,#0FFF
|
|
BPB_FAT
|
|
LD (FAT_TYP),A
|
|
LD (ENDCLUS),HL
|
|
|
|
LD IX,(DISKL)
|
|
LD HL,(DISKH)
|
|
LD DE,(FAT_FRM)
|
|
LD BC,#0000
|
|
ADD IX,DE
|
|
ADC HL,BC
|
|
;HL:IX
|
|
LD DE,FAT
|
|
LD BC,3*256 + BIOS.DRV_READ
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
RET C
|
|
LD HL,0
|
|
LD (FATCASH),HL
|
|
XOR A
|
|
RET
|
|
|
|
IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
|
|
CP #F0
|
|
RET C
|
|
CP #F8
|
|
LD A,"6"
|
|
LD HL,#FFFF
|
|
JR Z,BPB_FAT
|
|
LD A,"2"
|
|
LD HL,#0FFF
|
|
JR BPB_FAT
|
|
|
|
GETROOT LD HL,(DIR_FRH)
|
|
LD IX,(DIR_FRL)
|
|
LD BC,(DISKL)
|
|
LD DE,(DISKH)
|
|
LD A,(DIR_S_S)
|
|
NEXTSEC PUSH AF
|
|
ADD IX,BC
|
|
ADC HL,DE
|
|
;HL:IX
|
|
PUSH IX
|
|
PUSH HL
|
|
LD BC,1*256 + BIOS.DRV_READ
|
|
LD DE,DIR
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
CALL SEARCH
|
|
POP HL
|
|
POP IX
|
|
POP BC
|
|
RET C
|
|
RET NZ
|
|
LD A,B
|
|
LD DE,0
|
|
LD BC,1
|
|
DEC A
|
|
JR NZ,NEXTSEC
|
|
SCF
|
|
RET
|
|
|
|
SEARCH LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
|
LD IX,DIR-#0020
|
|
SKIPNAM LD DE,#0020
|
|
ADD IX,DE
|
|
DEC C
|
|
RET Z
|
|
LD A,(IX+00)
|
|
OR A
|
|
SCF
|
|
RET Z
|
|
CP #E5
|
|
JR Z,SKIPNAM
|
|
LD A,(IX+11)
|
|
AND #10
|
|
JR NZ,SKIPNAM
|
|
LD HL,MASKARE
|
|
LD D,XH
|
|
LD E,XL
|
|
LD B,11
|
|
SEARCH2 LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,SKIPNAM
|
|
INC HL
|
|
INC DE
|
|
DJNZ SEARCH2
|
|
LD D,XH
|
|
LD E,XL
|
|
LD HL,HANDBUF
|
|
EX DE,HL
|
|
LD BC,#0020
|
|
LDIR
|
|
XOR A
|
|
INC A
|
|
RET
|
|
|
|
; HL - CLUSTER
|
|
; DE - ADDRESS
|
|
|
|
FLOAD LD (READMEM),DE
|
|
LD_FILE PUSH HL
|
|
CALL NSECTOR
|
|
LD DE,(READMEM)
|
|
LD A,(BOOT.S_P_C)
|
|
CP #20
|
|
JR C,SMCLUS
|
|
LD BC,#20*256 + BIOS.DRV_READ_LONG
|
|
LD A,(BANKDOS)
|
|
EX AF,AF'
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
POP HL
|
|
AND A
|
|
RET
|
|
|
|
SMCLUS LD B,A
|
|
LD C,BIOS.DRV_READ_LONG
|
|
LD A,(BANKDOS)
|
|
EX AF,AF'
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
LD HL,(READMEM)
|
|
LD DE,(CLU_LEN)
|
|
ADD HL,DE
|
|
LD (READMEM),HL
|
|
POP HL
|
|
RET C
|
|
CALL R_F_FAT
|
|
RET C
|
|
EX DE,HL
|
|
JP LD_FILE
|
|
|
|
; HL - CLUSTER
|
|
; HL:IX - SECTOR
|
|
|
|
NSECTOR DEC HL
|
|
DEC HL
|
|
EX DE,HL
|
|
LD A,(BOOT.S_P_C)
|
|
LD B,A
|
|
LD HL,0
|
|
LD IX,0
|
|
ADD_DE1 ADD IX,DE
|
|
JP NC,ADD_DE2
|
|
INC HL
|
|
ADD_DE2 DJNZ ADD_DE1
|
|
LD DE,(DAT_FRM)
|
|
ADD IX,DE
|
|
LD DE,#0000
|
|
ADC HL,DE
|
|
LD DE,(DISKL)
|
|
ADD IX,DE
|
|
LD DE,(DISKH)
|
|
ADC HL,DE
|
|
RET
|
|
|
|
;-----------------
|
|
|
|
; HL - CLUSTER
|
|
; DE - (CLUSTER)
|
|
R_F_FAT: PUSH HL
|
|
LD A,(FAT_TYP)
|
|
CP "2"
|
|
JP Z,R_F_F12
|
|
R_F_F16 LD DE,768 ; DE - CLUSTERS IN CASH
|
|
XOR A
|
|
R_F_00H INC A ; HL - CLUSTER
|
|
SBC HL,DE
|
|
JP NC,R_F_00H
|
|
ADD HL,DE
|
|
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
|
DEC A
|
|
LD BC,(FATCASH) ; A - ELEMENT OF CASH
|
|
CP C
|
|
CALL NZ,RE_FAT
|
|
LD DE,FAT
|
|
ADD HL,DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,#FFEF
|
|
XOR A
|
|
SBC HL,DE
|
|
POP HL
|
|
RET
|
|
|
|
R_F_F12 LD D,H
|
|
LD E,L
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
RR H
|
|
RR L
|
|
PUSH AF
|
|
EX DE,HL
|
|
LD HL,(BOOT.B_P_S)
|
|
LD B,H
|
|
LD C,L
|
|
ADD HL,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
XOR A ; DE - SIZE SECTOR * 3
|
|
R_F_00 INC A ; HL - FAT OFFSET
|
|
SBC HL,DE
|
|
JP NC,R_F_00
|
|
ADD HL,DE
|
|
DEC A
|
|
LD BC,(FATCASH)
|
|
CP C
|
|
CALL NZ,RE_FAT
|
|
LD DE,FAT
|
|
ADD HL,DE
|
|
POP AF
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
JP C,R_F_F01
|
|
LD A,D
|
|
AND #0F
|
|
LD D,A
|
|
JP R_F_F02
|
|
|
|
R_F_F01 LD A,E
|
|
AND #F0
|
|
LD E,A
|
|
RR D
|
|
RR E
|
|
RR D
|
|
RR E
|
|
RR D
|
|
RR E
|
|
RR D
|
|
RR E
|
|
R_F_F02 LD HL,#0FEF
|
|
XOR A
|
|
SBC HL,DE
|
|
POP HL
|
|
RET
|
|
|
|
RE_FAT PUSH HL
|
|
LD L,A
|
|
LD H,0
|
|
LD (FATCASH),HL
|
|
LD E,L
|
|
LD D,H
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
LD IX,0
|
|
LD DE,(FAT_FRM)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
JR NC,NOINX
|
|
INC IX
|
|
NOINX LD HL,(DISKL)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD BC,(DISKH)
|
|
JR NC,NOINX2
|
|
INC IX
|
|
NOINX2 ADD IX,BC
|
|
PUSH IX
|
|
PUSH DE
|
|
POP IX
|
|
POP HL
|
|
LD DE,FAT
|
|
LD BC,3*256 + BIOS.DRV_READ
|
|
LD A,(DRIVE)
|
|
RST ToBIOS_18
|
|
POP HL
|
|
RET
|
|
|
|
MASKARE DB "SYSTEM DOS"
|
|
|
|
FATMSG DB "FAT"
|
|
|
|
; Area for boot sector [512Bytes]
|
|
BOOT _sBOOT_SEC = $
|
|
|
|
; BOOT EQU $
|
|
; ID_NAME EQU BOOT+#03 ; +03 DOS NAME
|
|
; ; Block Parameters BIOS
|
|
; B_P_S EQU BOOT+#0B ; +0B BYTE PER SECTOR
|
|
; S_P_C EQU BOOT+#0D ; +0D SECTORS PER CLUSTER
|
|
; RESERVE EQU BOOT+#0E ; +0E RESERVE SECTORS
|
|
; FAT_NUM EQU BOOT+#10 ; +10 AMOUNT FATS
|
|
; F_P_DIR EQU BOOT+#11 ; +11 FILES IN DIRECTORY
|
|
; S_P_D EQU BOOT+#13 ; +13 ALL SECTORS ON DISK
|
|
; ID_FORM EQU BOOT+#15 ; +15 ID FORMAT
|
|
; S_P_F EQU BOOT+#16 ; +16 SIZE FAT IN SECTORS
|
|
; S_P_T EQU BOOT+#18 ; +18 SECTOR PER TRACK
|
|
; HEADS EQU BOOT+#1A ; +1A AMOUNT SIDES
|
|
; HIDDEN EQU BOOT+#1C ; +1C HIDDEN SECTORS
|
|
; ID_FAT EQU BOOT+#36 ; +36 FAT ID
|
|
; ; end boot sector
|
|
|
|
|
|
DIR EQU BOOT+512
|
|
FAT EQU DIR+512
|
|
|
|
VALUE EQU 3*512+FAT
|
|
FATCASH EQU VALUE+0
|
|
FAT_FRM EQU VALUE+2 ; MSD_FAT_SEC first sector FAT
|
|
DIR_FRH EQU VALUE+4 ; MSD_CAT_SEC first sector DIR
|
|
DIR_FRL EQU VALUE+6 ; MSD_CAT_SEC first sector DIR
|
|
DIR_FRM EQU VALUE+6
|
|
DIR_S_S EQU VALUE+8 ; DIR_SEC_SIZE
|
|
DAT_FRM EQU VALUE+9 ; MSD_DAT_SEC
|
|
FAT_TYP EQU VALUE+11; TYPE FAT (#32 - 12bit, #36 - 16bit)
|
|
CLU_LEN EQU VALUE+12; CLASTER_LEN
|
|
ENDCLUS EQU VALUE+14
|
|
|
|
HANDBUF EQU VALUE+16
|
|
FTIME EQU VALUE+16+22
|
|
FDATE EQU VALUE+16+24
|
|
FCLUSTR EQU VALUE+16+26
|
|
FSIZE0 EQU VALUE+16+28
|
|
FSIZE1 EQU VALUE+16+30
|
|
|
|
DISKH EQU VALUE+48
|
|
DISKL EQU VALUE+50
|
|
READMEM EQU VALUE+52
|
|
SHEL_FM EQU VALUE+54
|
|
BANKDOS EQU VALUE+55
|
|
; EQU VALUE+56
|
|
|
|
;-----------------
|
|
BLOCK #8600-$-3,0
|
|
DB 'SPT'
|
|
; BIGA EQU (($/256)+1)*256
|
|
; BIGA2 EQU BIGA-$-2
|
|
; DS BIGA2
|
|
; DB "dp"
|
|
; E______
|
|
|
|
;STACK EQU (($/256)+2)*256
|
|
|
|
ENT
|
|
;START DI
|
|
; LD (SPZ+1),SP
|
|
; LD SP,#BFFF
|
|
; LD C,#FE
|
|
; CALL #3D13
|
|
;SPZ LD SP,#0000
|
|
; EI
|
|
; RET
|
|
|
|
OUTEND
|
|
;[]-----------------------------------------------------------[]
|