; ; 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,(PAGE3) LD E,A LD A,SYS_PAGE OUT (PAGE3),A LD A,E LD E,(HL) OUT (PAGE3),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,(PAGE3) LD D,A LD A,SYS_PAGE OUT (PAGE3),A LD A,(COUNT_FL) DEC A LD (COUNT_FL),A LD E,A LD A,D OUT (PAGE3),A ; RET_PAGE3 EI LD A,E POP DE AND A ; ‘Ž‘ CF !! JR NZ,MSDOS_TEST_FL PUSH DE DI IN A,(PAGE3) LD D,A LD A,SYS_PAGE OUT (PAGE3),A LD A,(COUNT_SEC) DEC A LD (COUNT_SEC),A LD E,A LD A,D OUT (PAGE3),A ; RET_PAGE3 EI LD A,E POP DE AND A SCF RET Z PUSH DE CALL READ_NEXT_DIR POP DE LD HL,MS_DIR JR MSDOS_TEST_FL ;********************************** MSDOS_CAT: PUSH DE CALL AUTO_1D97 ; CLS CALL OPEN_CH2 LD A,13 RST 10H POP DE ; ‘’ŽŠ€ Ž‘‹… CAT CAT_SPACES: LD A,(DE) CP 20H 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,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,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,(PAGE3) LD C,A LD A,SYS_PAGE OUT (PAGE3),A LD A,C LD DE,FL_NAME LD BC,11 LDIR LD BC,15 ADD HL,BC LD BC,5 LDIR LD L,(HL) OUT (PAGE3),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,(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 20H 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 (OPER_DISK),A LD (CONT_DISK),A LD B,A LD A,(PDOS_COPY) AND 7CH OR B LD (PDOS_COPY),A OUT (P_DOS_FF),A JP AUTO_03E1 END_TAB2: SUB 4 CP RAMD_KEY_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 (MED_START+1),A ; แฎๅเ ญจโ์ CALL MSDOS_FIND_FILE JP C,MSD_ERR CALL RMD_BLKS_FL ; B - ็จแซฎ กซฎชฎข , DE -  กแฎซ๎โญ๋ฉ แฅชโฎเ LD A,(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 (MED_START+1),A CALL MSDOS_FIND_FILE JP C,MSD_ERR CALL RMD_BLKS_FL LD A,(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,(FL_SIZE+2) PUSH HL LD HL,(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,(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,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,(PAGE3) EX AF,AF' LD A,SYS_PAGE OUT (PAGE3),A LD A,(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,(MSD_DAT_SEC) LD BC,(MSD_DAT_SEC2) ADD IX,DE ADC HL,BC ; HL,IX - ‘Œ…™…ˆ… Š‹€‘’…€ Ž’ €—€‹€ „€›• EX AF,AF' OUT (PAGE3),A PUSH IX EX (SP),HL POP IX EX DE,HL EI POP HL POP BC RET HD_TX: DB ' ERR_HD',0A0H HD_TX2: DB 'HDD not found',0A0H MSG_3: DB 'ERROR...',0A0H MSDOS_MSG: DB 'File not found...',0A0H NO_MEMORY: DB 'No RAM-Disk MEM',0A0H 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,0EAH LD C,0F3H CALL EXP_FNS EI CALL AUTO_1D97 AND A RET SPR_1: LD A,(DE) INC DE CP 20H JR Z,SPR_1 CP "1" LD C,0F0H JR Z,SP_1 CP "2" SCF RET NZ LD C,0F1H SP_1: LD A,(DE) CP 21H CCF RET C CALL EXP_FNS EI CALL AUTO_1D97 AND A RET ;**************************************************** ;***************************************** ; ERRORS ;***************************************** ; 0 - ƒ‹€‚€Ÿ Ž‚…Š€ Žƒ€ŒŒ› ; 1 - …‚…›‰ ”ސŒ€’ ˆŒ…ˆ ; 2 - ŠŽ…– Š€’€‹Žƒ€ ;