mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
645 lines
21 KiB
NASM
645 lines
21 KiB
NASM
|
||
;[BEGIN]
|
||
;//MODULE: DOS-MAIN AUTHOR: Denis Parinov
|
||
;//CREATE: A LONG TIME AGO :)
|
||
;---------------------------------------------------------------
|
||
;Rev Date Name Description
|
||
;---------------------------------------------------------------
|
||
;[ ] 㢥«¨ç¨âì ¤«¨ã PATH ¨ áâப¨ BAT
|
||
;[ ] ¯ãâì ⥪ã饣® ª â «®£ ¢ DIR ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ® ¤«¨¥¥ 256 ¡ ©â®¢
|
||
;[ ] ¯ãâì ¢ ¯à¨£« 襨¨ ª®á®«¨ ¢ë¢®¤¨âáï á £«îª®¬ ¥á«¨ ¯ãâì ¤«¨¥¥ 256 ¡ ©â®¢
|
||
;[ ] ;!FIXIT ª ª®©-â® ¡ £ ¯à¨ ª®â®à®¬ ¥á«¨ ¥â ¤¨áª ¨ ¥£® ¯®«¥§âì, â® ¢áñ «®¬ ¥âáï
|
||
;R12 24-07-2023 BAO Check minimum BIOS version on boot
|
||
;R11 17-04-2023 BAO OPTIMIZED BUFFERS, FREED UP 768 BYTES FOR CODE
|
||
;R10 14-04-2023 BAO €¢ à¨©ë© § ¢¨á® á ¢ë¢®¤®¬ á®®¡é¥¨ï ¯à¨ áâ à⥠á¨á⥬ë, ¥á«¨ ¥â ᢮¡®¤®© ¯ ¬ïâ¨
|
||
;R09 08-04-2023 BAO ‘®ªà 饨¥ à §¬¥à â ¡«¨æë API ¤® 96 äãªæ¨© (0 - #5F). (Ž¯æ¨® «ì® ¯à¨ ª®¬¯¨«ï樨)
|
||
;R08 15-04-2003 DNS RENAMED FN. OPEN AND CLOSE
|
||
;R07 31-03-2003 DNS NEW DEPLOYING ROUTINE
|
||
;R06 31-03-2003 DNS RELAYOUTING MEMORY
|
||
;R05 27-03-2003 DNS CHANGE DRV. INIT. METHOD
|
||
;R04 27-03-2003 DNS DRIVERS MOVE TO SPECIAL PAGE
|
||
;R03 14-03-2003 DNS CODE OPTIMIZATION
|
||
;R02 19-11-2002 DNS ADD ENVIRONMENT INITIALIZATION
|
||
;R01 14-11-2002 DNS CUT AND MOVE BPB-STRUCT
|
||
;---------------------------------------------------------------
|
||
; OUTPUT './Build/system.dos'
|
||
|
||
; MODULE MAIN
|
||
//SPRINTER EQU 2000
|
||
|
||
includelua 'Shared_includes/lua/Functions.lua'
|
||
INCLUDE 'defines.inc'
|
||
include 'shared_includes/constants/sp2000.inc'
|
||
include 'shared_includes/constants/standart_colors.inc'
|
||
include 'shared_includes/constants/bios_equ.inc'
|
||
include 'shared_includes/constants/dss_equ.inc'
|
||
include 'shared_includes/structures/FileSystem.inc'
|
||
include 'shared_includes/macroses/accelerator.z80'
|
||
include 'shared_includes/macroses/macros.z80'
|
||
include 'Structures.inc'
|
||
INCLUDE 'VERSION.INC'
|
||
INCLUDE 'DSS_MACROSES.Z80'
|
||
|
||
;PAGEDRV EQU #00
|
||
|
||
; DIRPAGE EQU 0
|
||
; FATPAGE EQU 1
|
||
; TXTPAGE EQU 2
|
||
; ENVPAGE EQU 2
|
||
; DRVPAGE EQU 3
|
||
; ENVPAGE EQU 3
|
||
; DRVPAGE EQU 4
|
||
|
||
; TXTADDR EQU #C000
|
||
; ENVADDR EQU #E400
|
||
|
||
; DIR EQU #C000
|
||
; FAT EQU #C000
|
||
|
||
|
||
;
|
||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||
ORG 0
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[CLOSE TASK]> ;
|
||
RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[BIOS API]> ;
|
||
_mInfoBLOCK 8-$,#FF ;
|
||
RST_0x08: PUSH AF ;
|
||
LD A,SYS_PORT.PAGE8;
|
||
OUT (SYS_PORT.ON),A ;
|
||
POP AF ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DSS API]> ;
|
||
_mInfoBLOCK #10-$,#FF ;
|
||
RST_0x10: JP RST_10 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DRIVE API]> ;
|
||
_mInfoBLOCK #18-$,#FF ;
|
||
;A0018 JP INTDISK ;
|
||
RST_0x18: PUSH AF ;
|
||
PUSH BC ;
|
||
DRV_PG_NUMBER+2: ;
|
||
LD BC,0*256+SLOT0 ;
|
||
JP PORTAL.out_MAIN ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
_mInfoBLOCK #20-$,#FF ;
|
||
RST_0x20: JP RST_20 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_20:
|
||
RST_28:
|
||
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
_mInfoBLOCK #28-$,#FF ;
|
||
RST_0x28: JP RST_28 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[MOUSE API]> ;
|
||
_mInfoBLOCK #30-$,#FF ;
|
||
RST_0x30: JP INTMOUS ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[MAIN INT]> ;
|
||
_mInfoBLOCK #38-$,#FF ;
|
||
RST_38: ;
|
||
JP RST_0x38 ; <20>â®â ¤¦ ¬¯ 㦥, ç⮡ á®äâë ¬®£«¨ «¥£ª® ¬¥ïâì ®¡à ¡®â稪 ᢮©. Š®áâë«ì®.
|
||
RST_0x38: ;
|
||
INT_: PUSH AF ;
|
||
EX AF,AF' ;
|
||
PUSH AF ;
|
||
PUSH BC ;
|
||
PUSH DE ;
|
||
PUSH HL ;
|
||
EXX ;
|
||
PUSH BC ;
|
||
PUSH DE ;
|
||
PUSH HL ;
|
||
PUSH IX ;
|
||
PUSH IY ;
|
||
CALL KEYSCAN ;
|
||
LD C,#80 ;
|
||
RST ToDSS.Mouse ;
|
||
IFN CLASSIC_CURSOR ;
|
||
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à ;!!!!! VASIL
|
||
ENDIF ;
|
||
POP IY ;
|
||
POP IX ;
|
||
POP HL ;
|
||
POP DE ;
|
||
POP BC ;
|
||
EXX ;
|
||
POP HL ;
|
||
POP DE ;
|
||
POP BC ;
|
||
POP AF ;
|
||
EX AF,AF' ;
|
||
POP AF ;
|
||
EI ;
|
||
RETI ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
NMI: RETN
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[ NMI ]> ;
|
||
_mInfoBLOCK #66-$,#FF ;
|
||
NMI_0x66: JP NMI ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_10: PUSH HL
|
||
LD L,C
|
||
|
||
IF SHORT_RSTx10_TABLE
|
||
;[ ] R09
|
||
LD H,A
|
||
LD A,#5F
|
||
SUB C
|
||
JR C,.error
|
||
LD A,H
|
||
;[ ] R09
|
||
ENDIF
|
||
|
||
LD H,high ADRST10
|
||
LD C,(HL)
|
||
INC H
|
||
LD H,(HL)
|
||
LD L,C
|
||
EX (SP),HL
|
||
RET
|
||
|
||
IF SHORT_RSTx10_TABLE
|
||
;[ ] R09
|
||
.error: POP HL
|
||
JR NOPS
|
||
;[ ] R09
|
||
ENDIF
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DRIVE PAGE SWITCH]> ;
|
||
_mInfoBLOCK #80-$,0 ;
|
||
;ENTER: ;
|
||
PORTAL.out_MAIN: ;
|
||
IN A,(C) ;
|
||
OUT (C),B ;
|
||
ASSERT $!=84,'-> Portal error!';
|
||
POP BC ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||
;
|
||
|
||
/*
|
||
STRUCT _sBOOT_SEC
|
||
.JMP: BLOCK 3,0 ; +#00 "JMP"
|
||
.ID_NAME: TEXT 8,{"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70"
|
||
; Block Parameters BIOS
|
||
.B_P_S: WORD #200 ; +#0B BYTE PER SECTOR
|
||
.S_P_C: BYTE 2 ; +#0D SECTORS PER CLUSTER
|
||
.RESERVE: WORD 1 ; +#0E RESERVE SECTORS
|
||
.FAT_NUM: BYTE 2 ; +#10 AMOUNT FATS
|
||
.F_P_DIR: WORD 112 ; +#11 FILES IN DIRECTORY
|
||
.S_P_D: WORD 1440 ; +#13 ALL SECTORS ON DISK
|
||
.ID_FORM: BYTE #F0 ; +#15 ID FORMAT
|
||
.S_P_F: WORD 2 ; +#16 SIZE FAT IN SECTORS
|
||
.S_P_T: WORD 9 ; +#18 SECTOR PER TRACK
|
||
.HEADS: WORD 2 ; +#1A AMOUNT SIDES
|
||
.HIDDEN: DWORD 0 ; +#1C HIDDEN SECTORS
|
||
.BPB_BIG_TOTAL_SECTORS: DWORD 0 ; +#20 BIG TOTAL SECTOR
|
||
.BPB_PHISICAL_DRIVE_NUMBER: WORD #80 ; +#24 PHISICAL DRIVE NUMBER
|
||
.BPB_EXT_BOOT_RECORD_SIGNATURE: BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE
|
||
.BPB_SERIAL_NUMBER: DWORD 0 ; +#27 VOLUME SERIAL NUMBER
|
||
.BPB_LABEL: TEXT 11,{"NO NAME"," "} ; +#2B DISK LABEL
|
||
.ID_FAT: TEXT 8,{"FAT16"," "} ; +#36 FILE SYSTEM ID ( BPB_FS_ID )
|
||
ENDS
|
||
*/
|
||
;R01
|
||
; Area for boot sector BootSector.
|
||
;BootSector _sBOOT_SEC ,{ "DSS_","0"+VERS,".",MODF/10+"0",MODF-(MODF/10)*10+"0" }
|
||
; end boot sector
|
||
;R01
|
||
|
||
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨¨æ¨ «¨§ 樨 ¤à¥á ¢ â ¡«¨æ¥ ¬¥ï¥âáï VERSION
|
||
F_START: DI
|
||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||
;LD (.saveDRV),A
|
||
LD H,A
|
||
LD (.saveDRV),HL ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||
;
|
||
|
||
;R12
|
||
LD C,BIOS.DRV_VERSION
|
||
RST ToBIOS
|
||
JR C,.err_oldBIOS
|
||
EX DE,HL
|
||
LD DE,MINIMUM_BIOS_VERSION
|
||
SBC HL,DE
|
||
JR NC,.good
|
||
LD A,(.saveDRV)
|
||
CP 2 ;¯à®¢¥àª § £à㧪ã á ¤¨áª¥âë, ¥á«¨ á ¤¨áª¥âë, â® ¬®¦® ¯à®¨£®à¨âì § ¯ã᪠BIOS ¨¦¥ 2.55
|
||
JR NC,.err_oldBIOS
|
||
LD HL,#C9AF ; XOR A : RET opcodes
|
||
LD (DRV_CONTENT + INITDVC.if_old),HL ;!!!!!!
|
||
;
|
||
|
||
.good: CALL DEPLOY ;R07 ;íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
||
RET C ;R10
|
||
CALL KINIT
|
||
CALL PRINT_INIT
|
||
LD C,Dss.Mouse.Init
|
||
RST ToDSS.Mouse
|
||
LD A,(VMODE)
|
||
LD C,Dss.Mouse.SetVideoMode
|
||
RST ToDSS.Mouse
|
||
;CALL INITDVC ;R05
|
||
;R05
|
||
LD C,Dss.DRV.Init
|
||
RST ToDSS.DRV
|
||
LD (LDRIVE),A
|
||
;R05
|
||
.saveDRV+1:
|
||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||
LD HL,0 ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||
LD A,H
|
||
;LD A,0
|
||
;
|
||
LD B,1
|
||
CALL BOOTDSK
|
||
|
||
EI
|
||
;Set new address fn. VERSION
|
||
LD HL,ADRST10
|
||
LD (HL),low VERSION ;R03
|
||
INC H
|
||
LD (HL),high VERSION ;R03
|
||
|
||
;------[CLEAR BUFFERS]------;
|
||
;R07 ;R11
|
||
LD HL,CLEAR_ZONE.start
|
||
LD DE,CLEAR_ZONE.start+1
|
||
LD BC,CLEAR_ZONE.size-1
|
||
LD (HL),0
|
||
LDIR
|
||
;R07 ;R11
|
||
;R11
|
||
LD HL,CORE_BUFFERS.FM_BUF
|
||
LD (HL),'.'
|
||
;R11
|
||
;---------------------------;
|
||
|
||
;R02
|
||
;LD B,#FF ;INIT ENVIRONMENT
|
||
CALL INITENV
|
||
IFN CLASSIC_CURSOR
|
||
CALL SETUP_CURSORS
|
||
ENDIF
|
||
;R02
|
||
JP VERSION
|
||
|
||
;R12
|
||
.err_oldBIOS:
|
||
LD HL,.err_oldBIOS_message
|
||
;LD C,Dss.PChars
|
||
;RST ToDSS
|
||
CALL PCHARS
|
||
SCF
|
||
RET
|
||
.err_oldBIOS_message:
|
||
DZ "\r\nWARNING! This version of DSS requires BIOS v2.55 or later to boot from IDE."
|
||
;
|
||
|
||
;R03
|
||
;R07Allocate memory
|
||
; LD BC,#03C2
|
||
; RST ToBIOS
|
||
; LD HL,BANKTBL
|
||
; LD C,A
|
||
; LD B,#FF
|
||
;VERINIT INC B
|
||
; PUSH BC
|
||
; PUSH HL
|
||
; LD A,C
|
||
; LD C,#C4
|
||
; RST ToBIOS
|
||
; POP HL
|
||
; POP BC
|
||
; LD (HL),A
|
||
; INC HL
|
||
; JR NC,VERINIT
|
||
;R07;R03
|
||
;R07 JP INIT2 ;R03
|
||
; DS $/256+1*256-$,0 c:\bin\menu
|
||
|
||
|
||
MEMTAB BLOCK 256,0
|
||
_mInfoALIGN 256,0
|
||
;------------------------------------------------------------------------------------------------------------------------;
|
||
GO_ZERO EQU #0000
|
||
;FUNCTION ADDRESS ARRAY
|
||
ADRST10: ;DS 512 ;,0
|
||
;...............................................[LOW ADDRESS ]:
|
||
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
|
||
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
|
||
DB low CREATE_FN, low CREAT_N, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
|
||
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR_FN ; 2 14..1D
|
||
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
||
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
||
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
|
||
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
|
||
|
||
IFN SHORT_RSTx10_TABLE
|
||
;[ ] R09
|
||
DB low NOPS, low NOPS, low NOPS, low NOPS ; 9 60..63
|
||
DB low NOPS, low NOPS, low NOPS, low NOPS, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO ; 10 64..6D
|
||
DUP 13
|
||
DB low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO, low GO_ZERO; 110-239 6E-EF
|
||
EDUP
|
||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 24 F0..F9
|
||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; END ; 25 FA..FF
|
||
|
||
ELSE ;!TODO free space
|
||
|
||
_mInfoBLOCK ADRST10+#100 - $,0
|
||
;[ ] R09
|
||
ENDIF
|
||
;...............................................[HIGH ADDRESS]:
|
||
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
|
||
DB high CREATE_FN, high CREAT_N, high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
|
||
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR, high RMDIR, high CHDIR_FN
|
||
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
|
||
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
|
||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH
|
||
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
|
||
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT
|
||
|
||
IFN SHORT_RSTx10_TABLE
|
||
;[ ] R09
|
||
DB high NOPS, high NOPS, high NOPS, high NOPS
|
||
DB high NOPS, high NOPS, high NOPS, high NOPS, high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
|
||
DUP 13
|
||
DB high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO,high GO_ZERO, high GO_ZERO
|
||
EDUP
|
||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS ; END
|
||
|
||
ELSE
|
||
;!TODO free space
|
||
;_mInfoBLOCK ADRST10+#200 - $,0
|
||
;[ ] R09
|
||
ENDIF
|
||
; DB low WINREST, low PUTCHAR, low PCHARS, low NOPS, low NOPS, low PRINT, low NOPS, low NOPS, low NOPS, low NOPS ; 9 5A..63
|
||
; DB high WINREST,high PUTCHAR,high PCHARS, high NOPS, high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS
|
||
;---------------------------------------------------------------------------------------------------------------------------------------------------------------;
|
||
;[INCLUDE]
|
||
;!TODO § ¬¥¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ¢ë§®¢ë ¡¨®á
|
||
INCLUDE "KEYINTER.ASM"
|
||
INCLUDE "VIDEO.ASM"
|
||
INCLUDE "API.ASM"
|
||
INCLUDE "DOS_Proc.asm"
|
||
INCLUDE "FS/FAT/FAT.ASM"
|
||
INCLUDE "DOS_FM.ASM"
|
||
|
||
INCLUDE "EXECUTE.ASM"
|
||
INCLUDE "INTMOUSE.ASM"
|
||
INCLUDE "Procedures.asm"
|
||
|
||
|
||
;!FIXIT ª ¡ãä¥à ¬
|
||
; Œ áᨢ «®£. ®¬¥à®¢ ¡ ®ª à áè¨à¥¨ï DSS
|
||
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
||
HANDBUF: BLOCK HANDBUF.SIZE,0
|
||
;
|
||
|
||
MASKARE: BLOCK 8,0 ; ¨¬ï ä ©«
|
||
BLOCK 3,0 ; à áè.
|
||
BLOCK 21,0 ; 11+21=32
|
||
;
|
||
DISPLAY "DOS-MAIN end address: ",/H,$-1
|
||
;
|
||
|
||
;!TODO ª ¡ãä¥à ¬!
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
CurrentPath: DB 'X'
|
||
DB ':'
|
||
CurrentDirectory: DB '\'
|
||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||
BLOCK CurrentDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||
;
|
||
WorkDirectory: DB '\'
|
||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||
BLOCK WorkDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
;
|
||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||
;
|
||
;
|
||
CLEAR_ZONE.start EQU $
|
||
|
||
MODULE CORE_BUFFERS
|
||
BUFFERSplace _sBuffers=$
|
||
FM_BUF _sFM = BUFFERSplace.FileManipulator
|
||
.Size EQU _sFM
|
||
.FullSize EQU FMCOUNT*FM_BUF.Size
|
||
BootSector _sBOOT_SEC = BUFFERSplace.BootSector
|
||
EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
|
||
XSTACK EQU BUFFERSplace.Stack.SPoint
|
||
BUFFER EQU BUFFERSplace.Buffer
|
||
SECBUF EQU BUFFER ;!TODO ®â¤¥«¨âì SECBUF ®â BUFFER
|
||
ENDMODULE
|
||
CLEAR_ZONE.size EQU _sBuffers
|
||
|
||
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||
DISPLAY "BUFFERSplace.BootSector ",/H,CORE_BUFFERS.BUFFERSplace.BootSector
|
||
DISPLAY "BootSector ", /H, CORE_BUFFERS.BootSector
|
||
DISPLAY "EXEBUFF ", /H, CORE_BUFFERS.EXEBUFF
|
||
DISPLAY "Size ", /H, CORE_BUFFERS.EXEBUFF - CORE_BUFFERS.BootSector
|
||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||
|
||
|
||
/*
|
||
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||
FM_BUF _sFM=$
|
||
.Size EQU _sFM
|
||
.FullSize EQU FMCOUNT*FM_BUF.Size
|
||
|
||
;????? ¥ £à㧨âáï «¨ ¯®«®áâìî ᥪâ®à ¢ 512 ¡ ©â®¢ ¯à¨ § £à㧪¥ åí¤¥à ?
|
||
EXEBUFF _sEXE_HEADER=$+FM_BUF.FullSize
|
||
; EXEBUFF:
|
||
; DB "EXE"
|
||
; DB #00
|
||
; OFFCOD1 DW #0000
|
||
; OFFCOD2 DW #0000
|
||
; LOADER DW #0000
|
||
; DW #0000
|
||
; DW #0000
|
||
; DW #0000
|
||
; LD_ADDR DW #0000
|
||
; PC_REG DW #0000
|
||
; SP_REG DW #0000
|
||
; BLOCK 512-($-EXEBUFF),0
|
||
|
||
;(!!!HERE STACK FOR EXEC!!!)
|
||
; BLOCK 255,0
|
||
;XSTACK DB #00
|
||
XSTACK EQU EXEBUFF+_sEXE_HEADER+255
|
||
|
||
BUFFER EQU XSTACK+1
|
||
SECBUF EQU BUFFER
|
||
;R11 ////////////////////////////////
|
||
*/
|
||
DISPLAY "FM_BUF addr: ",/H,CORE_BUFFERS.FM_BUF
|
||
DISPLAY "FM_BUF.Size: ",/H,CORE_BUFFERS.FM_BUF.Size
|
||
DISPLAY "FM_BUF.FullSize: ",/H,CORE_BUFFERS.FM_BUF.FullSize
|
||
DISPLAY "EXEBUFF: ",/H,CORE_BUFFERS.EXEBUFF
|
||
DISPLAY "XSTACK: ",/H,CORE_BUFFERS.XSTACK
|
||
DISPLAY "BUFFER: ",/H,CORE_BUFFERS.BUFFER
|
||
;
|
||
;
|
||
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
|
||
;
|
||
|
||
|
||
|
||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
||
; !!!!! íâ ¯à®æ¥¤ãà § âàñâáï ¯®á«¥ ¨á¯®«¥¨ï
|
||
DEPLOY: ;Allocate memory
|
||
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
|
||
RST ToBIOS
|
||
RET C ;R10
|
||
LD C,A
|
||
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
IN A,(SLOT0)
|
||
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
|
||
OUT (SLOT3),A
|
||
|
||
LD A,C
|
||
LD HL,BANKTBL + #C000
|
||
LD C,BIOS.GetMemBlkPages
|
||
RST ToBIOS
|
||
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
||
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
||
LD HL,BANKTBL + COREPAGE
|
||
IN A,(SLOT0)
|
||
LD (HL),A
|
||
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
|
||
SET_PAGE_X DRVPAGE
|
||
\
|
||
PUSH AF
|
||
LD HL,DRV_CONTENT
|
||
LD DE,#C000
|
||
LD BC,DRV_CONTENT.SIZE
|
||
LDIR
|
||
IN A,(SLOT3)
|
||
LD (DRV_PG_NUMBER),A
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
AND A ;R10
|
||
RET
|
||
|
||
IF ENVVALUE != CORE_BUFFERS.BUFFER
|
||
ASSERT "Warning! ENVVALUE != BUFFER"
|
||
//BLOCK 1000,0
|
||
ENDIF
|
||
|
||
;--- --- --- --- [Build version] --- --- --- ---;
|
||
; C_OSTYPE
|
||
;--- --- --- --- --- --- --- --- --- --- --- ---;
|
||
|
||
DISPLAY "DEPLOY end address: ",/H,$
|
||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||;
|
||
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."
|
||
DRV_CONTENT:
|
||
DISP 0
|
||
INCLUDE 'DRV-MAIN.ASM'
|
||
ENT
|
||
DRV_CONTENT.SIZE EQU $-DRV_CONTENT
|
||
|
||
DISPLAY " END ADDRESS: ",/H,$
|
||
// ASSERT $<#4001,'-> Memory leack!!!';
|
||
;[END]
|
||
|
||
;
|
||
|
||
|
||
; DTA DB " "
|
||
; DB " "
|
||
; DB #20
|
||
; DW 0,0,0,0,0
|
||
; DW 0
|
||
; DW 0
|
||
; CLUSTER DW 0
|
||
; SIZE DW 0,0
|
||
; ASCIIZ DB "FILENAME.EXT",#00
|
||
|
||
|
||
;R06
|
||
;R06 BUFFER
|
||
;R06 SECBUF DB ". ",#10
|
||
;R06 DW 0,0,0,0,0
|
||
;R06 DW #0000
|
||
;R06 DW #0000
|
||
;R06 DW #0000
|
||
;R06 DW #0000,0000
|
||
;R06 DB ".. ",#10
|
||
;R06 DW 0,0,0,0,0
|
||
;R06 DW #0000
|
||
;R06 DW #0000
|
||
;R06 DW #0000
|
||
;R06 DW #0000,0000
|
||
;R06 DS 512-64 ;,0 |