; ; for INCLUDE ; MS-DOS system ; ;********************************** MSDOS_FIND_FILE: PUSH DE ; ˆŒŸ ˆ‘ŠŽŒŽƒŽ ”€‰‹€ CALL MSDOS_1ST_FL POP DE RET C FIND_LOOP_ALL: CALL MSDOS_KOMP_FL RET Z ; ‚އ‚€’ - ”€‰‹ €‰„… !! MSDOS_FIND_NEXT: CALL MSDOS_NEXT_FL JR NC,FIND_LOOP_ALL RET ;*********************************************** ; ;*********************************************** MSDOS_1ST_FL: PUSH DE CALL READ_BPB CALL READ_1ST_DIR POP DE MSDOS_TEST_FL: PUSH DE DI IN A,(SLOT3) LD E,A LD A,SYS_PAGE OUT (SLOT3),A LD A,E LD E,(HL) OUT (SLOT3),A EI LD A,E POP DE AND A SCF RET Z ; ŠŽ…– Š€’€‹Žƒ€ CP 0E5H SCF CCF ; DEC A ; ‘’…’›‰ ”€‰‹ ; AND A RET ;********************************** MSDOS_NEXT_FL: PUSH DE LD DE,20H ADD HL,DE DI IN A,(SLOT3) LD D,A LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.COUNT_FL) DEC A LD (SYS_PAGE.COUNT_FL),A LD E,A LD A,D OUT (SLOT3),A ; RET_PAGE3 EI LD A,E POP DE AND A ; ‘Ž‘ CF !! JR NZ,MSDOS_TEST_FL PUSH DE DI IN A,(SLOT3) LD D,A LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.COUNT_SEC) DEC A LD (SYS_PAGE.COUNT_SEC),A LD E,A LD A,D OUT (SLOT3),A ; RET_PAGE3 EI LD A,E POP DE AND A SCF RET Z PUSH DE CALL READ_NEXT_DIR POP DE LD HL,SYS_PAGE.MS_DIR JR MSDOS_TEST_FL ;********************************** MSDOS_CAT: PUSH DE CALL AUTO_1D97 ; CLS CALL OPEN_CH2 LD A,13 RST #10 POP DE ; ‘’ŽŠ€ Ž‘‹… CAT CAT_SPACES: LD A,(DE) CP #20 JR NZ,CAT_NO_SPACE INC DE JR CAT_SPACES CAT_NO_SPACE: CP 13 JR NZ,CAT_ALL LD DE,CAT_FILES CAT_ALL: ; CALL MSDOS_FIND_FILE CALL MSDOS_1ST_FL JR C,CAT_END CAT_LOOP: JR Z,CAT_NO_PRINT CALL MSDOS_KOMP_FL JR NZ,CAT_NO_PRINT PUSH HL PUSH DE CALL OPEN_CH2 POP DE POP HL ; CALL COPY_NAME_MSD CALL PRINT_MSD_NAME CALL PRINT_MSD_DATS ; CALL MSDOS_FIND_NEXT CAT_NO_PRINT: CALL MSDOS_NEXT_FL JR NC,CAT_LOOP CAT_END: CALL OPEN_CH0 JP AUTO_03E1 PRINT_MSD_NAME: PUSH HL PUSH DE LD HL,ZX_VARS.FL_NAME LD A,' ' RST 10H LD A,' ' RST 10H LD B,8 PRINT_MSD_L1: LD A,(HL) RST 10H INC HL DJNZ PRINT_MSD_L1 LD A,' ' RST 10H LD B,3 PRINT_MSD_L2: LD A,(HL) RST 10H INC HL DJNZ PRINT_MSD_L2 LD A,6 RST 10H POP DE POP HL RET PRINT_MSD_DATS: PUSH HL PUSH DE LD HL,ZX_VARS.FL_PLACE+1 LD A,(HL) DEC HL CALL PRINT_HEX_A LD A,(HL) DEC HL CALL PRINT_HEX_A LD A,(HL) DEC HL CALL PRINT_HEX_A LD A,' ' RST 10H LD A,(HL) DEC HL CALL PRINT_HEX_A LD A,(HL) DEC HL CALL PRINT_HEX_A LD A,13 RST 10H POP DE POP HL RET ;********************************************** CAT_FILES: DB '*.*',13 ;********************************************** COPY_NAME_MSD: PUSH HL PUSH DE DI IN A,(SLOT3) LD C,A LD A,SYS_PAGE OUT (SLOT3),A LD A,C LD DE,ZX_VARS.FL_NAME LD BC,11 LDIR LD BC,15 ADD HL,BC LD BC,5 LDIR LD L,(HL) OUT (SLOT3),A ; RET_PAGE3 EI LD A,L POP DE POP HL AND A ; A = 0 „‹Ÿ ”€‰‹€ „‹ˆŽ‰ < 16 ŒĄ. RET ;********************************************* ;****************************************************** CMD_MSDOS: ; MS-DOS ĒŽŦ ­¤Ĩā !! ;****************************************************** CALL SINTAX_RET LD HL,WORDS LOOP_FIND2: LD DE,(ZX_VARS.ADR_DOS_COM) INC DE ; āޝãáâ¨âė / LD A,(HL) AND A JR Z,END_TAB LD B,A INC HL LOOP_FIND: LD A,(DE) AND 223 CP (HL) JR NZ,NEXT_WORD INC DE INC HL DJNZ LOOP_FIND LD A,(DE) CP 13 JR Z,CMD_EXE1 CP ' ' JR Z,CMD_EXE JR NEXT_WORD2 CMD_EXE: INC DE CMD_EXE1: LD A,(HL) INC HL LD H,(HL) LD L,A CALL JP_HL JP AUTO_03E1 JP_HL: JP (HL) NEXT_WORD: INC HL DJNZ NEXT_WORD NEXT_WORD2: INC HL INC HL JR LOOP_FIND2 END_TAB: INC DE LD A,(DE) CP ':' DEC DE JR NZ,END_TAB3 LD A,(DE) AND 223 SUB 'A' JR C,END_TAB3 CP 4 JR NC,END_TAB2 LD (ZX_VARS.OPER_DISK),A LD (ZX_VARS.CONT_DISK),A LD B,A LD A,(ZX_VARS.PDOS_COPY) AND 7CH OR B LD (ZX_VARS.PDOS_COPY),A OUT (FDC_93.DrvCTRL),A JP AUTO_03E1 END_TAB2: SUB 4 CP SYS_PAGE.RAMD_KEYS.NUM JR NC,END_TAB3 CALL RAMD_SET1 JP AUTO_03E1 END_TAB3: LD A,0 JP LOAD_RMD_XX MSD_ERR: LD HL,MSDOS_MSG JP AUTO_03E4 ;************************************ LOAD_RMD: CALL RAMD_SYM ; ¯ŽĢãį¨âė ­ŽŦĨā RAM-Disk ¨§ (DE) JP C,MSD_ERR LOAD_RMD_XX: LD (ZX_VARS.MED_START+1),A ; áŽåā ­¨âė CALL MSDOS_FIND_FILE JP C,MSD_ERR CALL RMD_BLKS_FL ; B - į¨áĢŽ ĄĢŽĒŽĸ , DE -  ĄáŽĢîâ­ëŠ áĨĒâŽā LD A,(ZX_VARS.MED_START+1) PUSH AF CALL CLEAR_RMD_A ; ŽáĸŽĄŽ¤¨âė RAM-Disk A POP AF CALL GET_RMD_A ; ãáâ ­Žĸ¨âė RAM-Disk A ā §ŦĨāŽŦ B LD HL,0C000H CALL MSDOS_READ_FILE JP AUTO_03E1 SAVE_RMD: CALL RAMD_SYM ; ¯ŽĢãį¨âė ­ŽŦĨā RAM-Disk ¨§ (DE) JP C,MSD_ERR LD (ZX_VARS.MED_START+1),A CALL MSDOS_FIND_FILE JP C,MSD_ERR CALL RMD_BLKS_FL LD A,(ZX_VARS.MED_START+1) CALL TEST_RAMD ; ¯āŽĸĨā¨âė ­ Ģ¨į¨Ĩ RAM-Disk A ā §ŦĨāŽŦ B JP C,MSD_ERR ; A - ­ŽŦĨā ¯ĨāĸŽŖŽ ĄĢŽĒ  JP Z,MSD_ERR LD HL,0C000H CALL MSDOS_WRITE_FILE JP AUTO_03E1 RMD_BLKS_FL: LD A,(ZX_VARS.FL_SIZE+2) PUSH HL LD HL,(ZX_VARS.FL_SIZE) LD B,A AND A RL L RL H RL B AND A RL L RL H RL B LD A,H OR L JR Z,RMD_BLKS_L2 INC B RMD_BLKS_L2: POP HL RET ; B - —ˆ‘‹Ž ‹ŽŠŽ‚ RAM_DISK ;**************************************** MSDOS_KOMP_FL: ; DE - ˆŒŸ ”€‰‹€ ‘Ž *,? ; HL - ˆŒŸ ‚ Š€’€‹Žƒ… CALL COPY_NAME_MSD ; ……Œ…‘’ˆ’œ ˆŒŸ ‚ ށ‹€‘’œ TR-DOS LD A,(ZX_VARS.FL_NAME) AND A JR NZ,KOMP_CONT1 LD A,2 ; ŠŽ…– Š€’€‹Žƒ€ AND A ; NZ - ˆŒŸ … ‘Ž‚€„€…’ RET KOMP_CONT1: CP 0A5h JR NZ,KOMP_CONT2 LD A,1 ; ‘’…’›‰ ”€‰‹ - ˆŒŸ … ‘Ž‚€„€…’ AND A RET KOMP_CONT2: PUSH DE PUSH HL LD HL,ZX_VARS.FL_NAME CALL MSDOS_KOMP_ALL POP HL POP DE RET MSDOS_KOMP_ALL: LD A,(DE) INC DE CP 20H JR Z,MSDOS_KOMP_ALL CP 13 JR Z,KOMP_ERROR_NAME ; …‚…Ž… ˆŒŸ DEC DE LD B,8 CALL KOMP_TX RET NZ LD A,(DE) CP '.' JR Z,KOMP_POINT CP 13 JR Z,KOMP_SPACING3 CP 20H JR Z,KOMP_SPACING3 KOMP_ERROR_NAME: ; …‚…Ž… ˆŒŸ LD A,1 AND A RET KOMP_POINT: INC DE LD B,3 CALL KOMP_TX RET NZ LD A,(DE) CP 13 RET Z CP 20H RET Z JR KOMP_ERROR_NAME ;**************************************************** KOMP_TX: LD A,(DE) CP 13 JR Z,KOMP_SPACING CP 20H JR Z,KOMP_SPACING CP '.' JR Z,KOMP_SPACING CP '?' JR Z,KOMP_EX_OK CP '*' JR Z,KOMP_EX_OK2 CP 'a' JR C,KOMP_EXEC CP 'z'+1 JR NC,KOMP_EXEC AND 223 KOMP_EXEC: CP (HL) RET NZ ; ­Ĩâ áŽĸ¯ ¤Ĩ­¨ī KOMP_EX_OK: INC DE KOMP_EX_OK2: INC HL DJNZ KOMP_TX CP '*' JR NZ,KOMP_NO_STAR1 INC DE KOMP_NO_STAR1: XOR A RET KOMP_SPACING3: LD B,3 KOMP_SPACING: LD A,20H KOMP_L2: CP (HL) INC HL RET NZ DJNZ KOMP_L2 RET ;************************************************ CALC_CLAST: ; HL - áâ āâŽĸëŠ ĒĢ áâĨā PUSH BC PUSH HL DEC HL DEC HL DI IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE) EX DE,HL LD BC,0 LD HL,0 LD IX,0 CALC_CL_LP: ADD IX,DE ADC HL,BC DEC A JR NZ,CALC_CL_LP LD DE,(SYS_PAGE.MSD_DAT_SEC) LD BC,(SYS_PAGE.MSD_DAT_SEC2) ADD IX,DE ADC HL,BC ; HL,IX - ‘Œ…™…ˆ… Š‹€‘’…€ Ž’ €—€‹€ „€›• EX AF,AF' OUT (SLOT3),A PUSH IX EX (SP),HL POP IX EX DE,HL EI POP HL POP BC RET HD_TX: DC ' ERR_HD ' HD_TX2: DC 'HDD not found ' MSG_3: DC 'ERROR... ' MSDOS_MSG: DC 'File not found... ' NO_MEMORY: DC 'No RAM-Disk MEM ' WORDS: DB 5,'CLEAR' ; Žį¨áâ¨âė RAM-Disk DW CLEAR_RAMD_X DB 3,'CAT' ; Ē â ĢŽŖ MS-DOS DW MSDOS_CAT DB 3,'DIR' ; Ē â ĢŽŖ MS-DOS DW MSDOS_CAT DB 3,'HDD' ; ¯Ž¤ĒĢîį¨âė HDD DW HDD_SET DB 3,'FDD' ; ¯Ž¤ĒĢîį¨âė FDD DW FDD_SET DB 3,'RMD' ; ¯Ž¤ĒĢîį¨âė RMD DW RAMD_SET DB 3,'HDT' ; âĨáâ HDD DW HDD_PROG DB 2,'RD' ; âĨáâ RAM-Disk space DW RAMD_FAT_PROG DB 4,'SAVE' ; áŽåā ­¨âė RAM-Disk DW SAVE_RMD DB 4,'LOAD' ; § Ŗā㧨âė RAM-Disk DW LOAD_RMD DB 4,'TBON' ; ĸĒĢîį¨âė âãāĄŽ DW TB_ONOFF DB 5,'TBOFF' ; ĸëĒĢîį¨âė âãāĄŽ DW TB_ONOFF DB 4,'INIT' ; ¨­¨§¨ Ģ¨§ æ¨ī DW INIT_RMD DB 8,"SPRINTER" DW SPR_1 DB 2,"AY" DW AY8910 DB 0 ;SAVE_AUTOEXEC: ; LD C,0FEH ; CALL EXP_FNS ; RET AY8910: LD A,#EA LD C,#F3 ;!HARDCODE BIOS.SPRINTER_ALL CALL EXP_FNS ;!TEST 06/01/2024 áŽåā ­īĨŦ áŽáâŽī­¨Ĩ ¯āĨāëĸ ­¨Š § įĨŦ-⎠;EI ; CALL AUTO_1D97 AND A RET SPR_1: LD A,(DE) INC DE CP " " JR Z,SPR_1 CP "1" LD C,BIOS.RST_CONF.SP97_1 JR Z,SP_1 CP "2" SCF RET NZ LD C,BIOS.RST_CONF.SP97_2 SP_1: LD A,(DE) CP #21 CCF RET C CALL EXP_FNS ;!TEST 06/01/2024 áŽåā ­īĨŦ áŽáâŽī­¨Ĩ ¯āĨāëĸ ­¨Š § įĨŦ-⎠;EI ; CALL AUTO_1D97 AND A RET ;**************************************************** ;***************************************** ; ERRORS ;***************************************** ; 0 - ƒ‹€‚€Ÿ Ž‚…Š€ Žƒ€ŒŒ› ; 1 - …‚…›‰ ”ސŒ€’ ˆŒ…ˆ ; 2 - ŠŽ…– Š€’€‹Žƒ€ ;