├── .editorconfig ├── .gitattributes ├── ASM_AILS80ASM.BAT ├── ASM_AILS80ASM_BOOT.BAT ├── ASM_AILS80ASM_BOOT2.BAT ├── ASM_AILS80ASM_CMD.BAT ├── BOOT.ASM ├── BOOT.BIN ├── BOOT.LST ├── BOOT2.ASM ├── BOOT2.BIN ├── BOOT2.LST ├── COMMAND.ASM ├── COMMAND.COM ├── COMMAND.LST ├── COMMAND.SYM ├── COMMAND.TXT ├── DEF.ASM ├── DOS.ASM ├── DOS.LST ├── DOS.SYS ├── LICENSE ├── README.MD └── disk ├── dos2formsx.dsk └── dosformsx.dsk /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.ASM] 4 | indent_style = tab 5 | end_of_line = crlf 6 | charset = shift_jis 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | indent_size = 8 10 | tab_width = 8 11 | 12 | [*.ASZ] 13 | indent_style = tab 14 | end_of_line = crlf 15 | charset = shift_jis 16 | trim_trailing_whitespace = true 17 | insert_final_newline = true 18 | indent_size = 8 19 | tab_width = 8 20 | 21 | [*.{html,css,xml,TXT}] 22 | indent_style = space 23 | end_of_line = crlf 24 | charset = utf-8 25 | trim_trailing_whitespace = true 26 | insert_final_newline = true 27 | indent_size = 2 28 | 29 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /ASM_AILS80ASM.BAT: -------------------------------------------------------------------------------- 1 | rem 2 | rem Assemble batch for AILZ80ASM 3 | rem 4 | rem 5 | 6 | set ASM=\tool\AILSZ80\AILZ80ASM.exe 7 | 8 | %ASM% -lst -bin DOS.SYS -i DOS.ASM -f -gap 0 9 | -------------------------------------------------------------------------------- /ASM_AILS80ASM_BOOT.BAT: -------------------------------------------------------------------------------- 1 | rem 2 | rem Assemble batch for AILZ80ASM 3 | rem 4 | rem 5 | 6 | set ASM=\tool\AILSZ80\AILZ80ASM.exe 7 | 8 | %ASM% -lst -bin BOOT.BIN -i BOOT.ASM -f -gap 0 9 | -------------------------------------------------------------------------------- /ASM_AILS80ASM_BOOT2.BAT: -------------------------------------------------------------------------------- 1 | rem 2 | rem Assemble batch for AILZ80ASM 3 | rem 4 | rem 5 | 6 | set ASM=\tool\AILSZ80\AILZ80ASM.exe 7 | 8 | %ASM% -lst -bin BOOT2.BIN -i BOOT2.ASM -f -gap 0 9 | -------------------------------------------------------------------------------- /ASM_AILS80ASM_CMD.BAT: -------------------------------------------------------------------------------- 1 | rem 2 | rem Assemble batch for AILZ80ASM 3 | rem 4 | rem 5 | 6 | set ASM=\tool\AILSZ80\AILZ80ASM.exe 7 | 8 | %ASM% -lst -bin COMMAND.COM -i COMMAND.ASM -f -gap 0 -sym 9 | -------------------------------------------------------------------------------- /BOOT.ASM: -------------------------------------------------------------------------------- 1 | ; 似非DOS BOOT (DOS1) 2 | 3 | BDOS EQU 0F37DH 4 | ROMUSE EQU 0F368H 5 | RAMUSE EQU 0F36BH 6 | 7 | ORG 0C000H 8 | ; 9 | ; BPB 10 | ; 11 | DB 0EBH,0FEH,090H ;BS_JmpBoot 12 | DB "DOS " ;BS_OEMName 13 | DW 512 ;BPB_BytsPerSec 14 | DB 2 ;BPB_SecPerClus 15 | DW 1 ;BPB_RsvdSecCnt 16 | DB 2 ;BPB_NumFATs 17 | DW 112 ;BPB_RootEntCnt 18 | DW 1440 ;BPB_TotSec16 19 | DB 0F9H ;BPB_Media 20 | DW 3 ;BPB_FATSz16 21 | DW 9 ;BPB_SecPerTrk 22 | DW 2 ;BPB_NumHeads 23 | DW 0 ;BPB_HiddSec(2バイト) 24 | JR START ;ブートプログラムへジャンプ 25 | DB "_DOS1_" ;MSX-DOS2判別用(VOL_IDじゃなければDOS1) 26 | DB 0 ;ダーティディスクフラグ 27 | DB "DOS1" ;ボリュームID(適当な4バイト) 28 | DS 5 ;Reserved for future 29 | ; 30 | ; ブートプログラム 31 | ; 32 | START: 33 | RET NC 34 | 35 | LD DE,FCB 36 | LD C,00FH 37 | CALL BDOS 38 | INC A 39 | RET Z 40 | 41 | LD HL,0 42 | LD (FCB+33),HL 43 | LD (FCB+35),HL 44 | INC L 45 | LD (FCB+14),HL 46 | 47 | LD DE,00100H 48 | LD C,01AH ;(BDOS)DTAの設定 49 | CALL BDOS 50 | 51 | CALL RAMUSE ;ページ1をメインRAMに切り替える 52 | 53 | LD DE,FCB 54 | LD HL,0BF00H 55 | LD C,027H ;(BDOS)ランダム・ブロック・リード 56 | CALL BDOS 57 | CP 1 58 | JP Z,00100H 59 | 60 | JP ROMUSE ;ページ1をメインROMに切り替える 61 | 62 | FCB: DB 0, "DOS SYS",0,0,0,0 63 | -------------------------------------------------------------------------------- /BOOT.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/BOOT.BIN -------------------------------------------------------------------------------- /BOOT.LST: -------------------------------------------------------------------------------- 1 |  ;*** AILZ80ASM *** Z-80 Assembler, version 1.0.21.0, LST:Full:4 2 | ; 似非DOS BOOT (DOS1) 3 | 4 | F37D BDOS EQU 0F37DH 5 | F368 ROMUSE EQU 0F368H 6 | F36B RAMUSE EQU 0F36BH 7 | 8 | 000000 C000 ORG 0C000H 9 | ; 10 | ; BPB 11 | ; 12 | 000000 C000 EBFE90 DB 0EBH,0FEH,090H ;BS_JmpBoot 13 | 000003 C003 444F532020202020 DB "DOS " ;BS_OEMName 14 | 00000B C00B 0002 DW 512 ;BPB_BytsPerSec 15 | 00000D C00D 02 DB 2 ;BPB_SecPerClus 16 | 00000E C00E 0100 DW 1 ;BPB_RsvdSecCnt 17 | 000010 C010 02 DB 2 ;BPB_NumFATs 18 | 000011 C011 7000 DW 112 ;BPB_RootEntCnt 19 | 000013 C013 A005 DW 1440 ;BPB_TotSec16 20 | 000015 C015 F9 DB 0F9H ;BPB_Media 21 | 000016 C016 0300 DW 3 ;BPB_FATSz16 22 | 000018 C018 0900 DW 9 ;BPB_SecPerTrk 23 | 00001A C01A 0200 DW 2 ;BPB_NumHeads 24 | 00001C C01C 0000 DW 0 ;BPB_HiddSec(2バイト) 25 | 00001E C01E 1810 12 JR START ;ブートプログラムへジャンプ 26 | 000020 C020 5F444F53315F DB "_DOS1_" ;MSX-DOS2判別用(VOL_IDじゃなければDOS1) 27 | 000026 C026 00 DB 0 ;ダーティディスクフラグ 28 | 000027 C027 444F5331 DB "DOS1" ;ボリュームID(適当な4バイト) 29 | 00002B C02B DS 5 ;Reserved for future 30 | ; 31 | ; ブートプログラム 32 | ; 33 | C030 START: 34 | 000030 C030 D0 11 RET NC 35 | 36 | 000031 C031 1166C0 10 LD DE,FCB 37 | 000034 C034 0E0F 7 LD C,00FH 38 | 000036 C036 CD7DF3 17 CALL BDOS 39 | 000039 C039 3C 4 INC A 40 | 00003A C03A C8 11 RET Z 41 | 42 | 00003B C03B 210000 10 LD HL,0 43 | 00003E C03E 2287C0 16 LD (FCB+33),HL 44 | 000041 C041 2289C0 16 LD (FCB+35),HL 45 | 000044 C044 2C 4 INC L 46 | 000045 C045 2274C0 16 LD (FCB+14),HL 47 | 48 | 000048 C048 110001 10 LD DE,00100H 49 | 00004B C04B 0E1A 7 LD C,01AH ;(BDOS)DTAの設定 50 | 00004D C04D CD7DF3 17 CALL BDOS 51 | 52 | 000050 C050 CD6BF3 17 CALL RAMUSE ;ページ1をメインRAMに切り替える 53 | 54 | 000053 C053 1166C0 10 LD DE,FCB 55 | 000056 C056 2100BF 10 LD HL,0BF00H 56 | 000059 C059 0E27 7 LD C,027H ;(BDOS)ランダム・ブロック・リード 57 | 00005B C05B CD7DF3 17 CALL BDOS 58 | 00005E C05E FE01 7 CP 1 59 | 000060 C060 CA0001 10 JP Z,00100H 60 | 61 | 000063 C063 C368F3 10 JP ROMUSE ;ページ1をメインROMに切り替える 62 | 63 | 000066 C066 00444F5320202020 FCB: DB 0, "DOS SYS",0,0,0,0 64 | 2053595300000000 65 | [EOF:BOOT.ASM:UTF_8] 66 | -------------------------------------------------------------------------------- /BOOT2.ASM: -------------------------------------------------------------------------------- 1 | ; 似非DOS BOOT2 (DOS2) 2 | 3 | BDOS EQU 0F37DH 4 | ROMUSE EQU 0F368H 5 | RAMUSE EQU 0F36BH 6 | 7 | ORG 0C000H 8 | ; 9 | ; BPB 10 | ; 11 | DB 0EBH,0FEH,090H ;BS_JmpBoot 12 | DB "DOS " ;BS_OEMName 13 | DW 512 ;BPB_BytsPerSec 14 | DB 2 ;BPB_SecPerClus 15 | DW 1 ;BPB_RsvdSecCnt 16 | DB 2 ;BPB_NumFATs 17 | DW 112 ;BPB_RootEntCnt 18 | DW 1440 ;BPB_TotSec16 19 | DB 0F9H ;BPB_Media 20 | DW 3 ;BPB_FATSz16 21 | DW 9 ;BPB_SecPerTrk 22 | DW 2 ;BPB_NumHeads 23 | DW 0 ;BPB_HiddSec(2バイト) 24 | JR START ;ブートプログラムへジャンプ 25 | DB "VOL_ID" ;MSX-DOS2判別用(VOL_IDなのでDOS2) 26 | DB 0 ;ダーティディスクフラグ 27 | DB "DOS2" ;ボリュームID(適当な4バイト) 28 | DS 5 ;Reserved for future 29 | ; 30 | ; ブートプログラム 31 | ; 32 | START: 33 | RET NC 34 | 35 | LD DE,FCB 36 | LD C,00FH 37 | CALL BDOS 38 | INC A 39 | RET Z 40 | 41 | LD HL,0 42 | LD (FCB+33),HL 43 | LD (FCB+35),HL 44 | INC L 45 | LD (FCB+14),HL 46 | 47 | LD DE,00100H 48 | LD C,01AH ;(BDOS)DTAの設定 49 | CALL BDOS 50 | 51 | CALL RAMUSE ;ページ1をメインRAMに切り替える 52 | 53 | LD DE,FCB 54 | LD HL,0BF00H 55 | LD C,027H ;(BDOS)ランダム・ブロック・リード 56 | CALL BDOS 57 | CP 1 58 | JP Z,00100H 59 | 60 | JP ROMUSE ;ページ1をメインROMに切り替える 61 | 62 | FCB: DB 0, "DOS SYS",0,0,0,0 63 | -------------------------------------------------------------------------------- /BOOT2.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/BOOT2.BIN -------------------------------------------------------------------------------- /BOOT2.LST: -------------------------------------------------------------------------------- 1 |  ;*** AILZ80ASM *** Z-80 Assembler, version 1.0.21.0, LST:Full:4 2 | ; 似非DOS BOOT2 (DOS2) 3 | 4 | F37D BDOS EQU 0F37DH 5 | F368 ROMUSE EQU 0F368H 6 | F36B RAMUSE EQU 0F36BH 7 | 8 | 000000 C000 ORG 0C000H 9 | ; 10 | ; BPB 11 | ; 12 | 000000 C000 EBFE90 DB 0EBH,0FEH,090H ;BS_JmpBoot 13 | 000003 C003 444F532020202020 DB "DOS " ;BS_OEMName 14 | 00000B C00B 0002 DW 512 ;BPB_BytsPerSec 15 | 00000D C00D 02 DB 2 ;BPB_SecPerClus 16 | 00000E C00E 0100 DW 1 ;BPB_RsvdSecCnt 17 | 000010 C010 02 DB 2 ;BPB_NumFATs 18 | 000011 C011 7000 DW 112 ;BPB_RootEntCnt 19 | 000013 C013 A005 DW 1440 ;BPB_TotSec16 20 | 000015 C015 F9 DB 0F9H ;BPB_Media 21 | 000016 C016 0300 DW 3 ;BPB_FATSz16 22 | 000018 C018 0900 DW 9 ;BPB_SecPerTrk 23 | 00001A C01A 0200 DW 2 ;BPB_NumHeads 24 | 00001C C01C 0000 DW 0 ;BPB_HiddSec(2バイト) 25 | 00001E C01E 1810 12 JR START ;ブートプログラムへジャンプ 26 | 000020 C020 564F4C5F4944 DB "VOL_ID" ;MSX-DOS2判別用(VOL_IDなのでDOS2) 27 | 000026 C026 00 DB 0 ;ダーティディスクフラグ 28 | 000027 C027 444F5332 DB "DOS2" ;ボリュームID(適当な4バイト) 29 | 00002B C02B DS 5 ;Reserved for future 30 | ; 31 | ; ブートプログラム 32 | ; 33 | C030 START: 34 | 000030 C030 D0 11 RET NC 35 | 36 | 000031 C031 1166C0 10 LD DE,FCB 37 | 000034 C034 0E0F 7 LD C,00FH 38 | 000036 C036 CD7DF3 17 CALL BDOS 39 | 000039 C039 3C 4 INC A 40 | 00003A C03A C8 11 RET Z 41 | 42 | 00003B C03B 210000 10 LD HL,0 43 | 00003E C03E 2287C0 16 LD (FCB+33),HL 44 | 000041 C041 2289C0 16 LD (FCB+35),HL 45 | 000044 C044 2C 4 INC L 46 | 000045 C045 2274C0 16 LD (FCB+14),HL 47 | 48 | 000048 C048 110001 10 LD DE,00100H 49 | 00004B C04B 0E1A 7 LD C,01AH ;(BDOS)DTAの設定 50 | 00004D C04D CD7DF3 17 CALL BDOS 51 | 52 | 000050 C050 CD6BF3 17 CALL RAMUSE ;ページ1をメインRAMに切り替える 53 | 54 | 000053 C053 1166C0 10 LD DE,FCB 55 | 000056 C056 2100BF 10 LD HL,0BF00H 56 | 000059 C059 0E27 7 LD C,027H ;(BDOS)ランダム・ブロック・リード 57 | 00005B C05B CD7DF3 17 CALL BDOS 58 | 00005E C05E FE01 7 CP 1 59 | 000060 C060 CA0001 10 JP Z,00100H 60 | 61 | 000063 C063 C368F3 10 JP ROMUSE ;ページ1をメインROMに切り替える 62 | 63 | 000066 C066 00444F5320202020 FCB: DB 0, "DOS SYS",0,0,0,0 64 | 2053595300000000 65 | [EOF:BOOT2.ASM:UTF_8] 66 | -------------------------------------------------------------------------------- /COMMAND.ASM: -------------------------------------------------------------------------------- 1 | 2 | ; 似非COMMAND.COM 3 | 4 | INCLUDE "DEF.ASM" 5 | 6 | PATHX EQU 64 7 | 8 | DATA EQU 08000H 9 | 10 | ORG 00100H 11 | JP START 12 | TITLE: 13 | DB 00DH,00AH,"pseudo COMMAND v$" 14 | START: 15 | LD SP,(SYSTEM+1) 16 | LD C,06FH ;(BDOS)MSX-DOS のバージョン番号の獲得 17 | CALL SYSTEM 18 | RET C 19 | LD HL,0011DH 20 | SBC HL,BC 21 | LD A,B 22 | LD (MAJOR_VER),A 23 | OR L 24 | LD (IS_MSX),A 25 | OR A 26 | JP Z,WSTART 27 | LD HL,08A91H 28 | SBC HL,DE 29 | JR NZ,NOTABLACUS 30 | LD A,1 31 | LD (MAJOR_VER),A 32 | NOTABLACUS: 33 | LD A,(PROCESS) 34 | LD C,61H ;(BDOS)親プロセスに戻る 35 | LD B,A 36 | OR A 37 | CALL NZ,SYSTEM 38 | XOR A 39 | LD (PROCESS),A 40 | 41 | LD HL,002BH ;キャラクターセット・日時フォーマット・ビデオ信号の種別 42 | CALL RDSLT 43 | RRCA 44 | RRCA 45 | RRCA 46 | RRCA 47 | AND 3 48 | JR Z,DATEOK 49 | DEC A 50 | LD HL,V_DATE1 51 | JR Z,DATECHG 52 | DEC A 53 | LD HL,V_DATE2 54 | JR NZ,DATEOK 55 | DATECHG: 56 | LD DE,V_DATE 57 | LD BC,8 58 | LDIR 59 | DATEOK: 60 | CALL INIT_VAR 61 | LD A,(TRCFLG) 62 | OR A 63 | JR Z,WSTART0 64 | LD DE,COMERM 65 | LD C,9 ;(BDOS)文字列出力 66 | CALL SYSTEM 67 | LD HL,(TRCFLG) 68 | LD H,0 69 | CALL PRDEC_HL 70 | XOR A 71 | LD (TRCFLG),A 72 | WSTART0: 73 | LD HL,(1) 74 | LD L,256-37 75 | DEC H 76 | LD (FCB_BAT),HL 77 | LD A,(DTA1) 78 | OR A 79 | JR Z,WSTART 80 | LD DE,TITLE 81 | LD C,9 82 | CALL SYSTEM 83 | 84 | LD HL,VER_BCD 85 | LD A,H 86 | CALL PRTHX1 87 | LD A,'.' 88 | CALL MSG_A 89 | LD A,L 90 | CALL PRTHX 91 | LD A,00DH 92 | CALL MSG_A 93 | LD A,00AH 94 | CALL MSG_A 95 | 96 | LD DE,DTA1+1 97 | CALL COMANL 98 | WSTART: 99 | LD HL,N_APPEND 100 | LD DE,V_APPEND 101 | LD C,06CH ;_SENV 環境変数の設定 102 | CALL SYSTEM 103 | 104 | LD HL,N_PROGRAM 105 | LD DE,ZERO 106 | LD C,06CH ;_SENV 環境変数の設定 107 | CALL SYSTEM 108 | 109 | LD HL,N_PARAMETERS 110 | LD DE,ZERO 111 | LD C,06CH ;_SENV 環境変数の設定 112 | CALL SYSTEM 113 | 114 | XOR A 115 | LD (CSRSW),A 116 | 117 | CALL LTNL 118 | COMMAND: 119 | PUSH HL 120 | LD HL,(FCB_BAT) 121 | LD A,(HL) 122 | POP HL 123 | OR A 124 | JP NZ,C_BAT1 125 | CALL SETDTA1 126 | PUSH DE 127 | PUSH BC 128 | PUSH HL 129 | LD C,019H ;(BDOS)_CURDRV デフォルトドライブの獲得 130 | CALL SYSTEM 131 | POP HL 132 | POP BC 133 | ADD A,'A' 134 | CALL MSG_A 135 | LD E,'>' 136 | CALL _PRINT 137 | POP DE ;DE=DTA1 138 | LD A,80 139 | LD (DE),A 140 | LD C,0AH ;(BDOS)文字列入力 141 | CALL SYSTEM 142 | CALL LTNL 143 | COMMAND2: 144 | LD DE,DTA1+2 145 | CALL COMANL 146 | JR NC,COMMAND 147 | LD DE,COMERM 148 | LD C,9 ;(BDOS)文字列出力 149 | CALL SYSTEM 150 | JR WSTART 151 | 152 | COMANL: 153 | CALL TOZERO 154 | LD (COMST),DE 155 | CALL FILE 156 | PUSH DE 157 | LD DE,FNAME 158 | LD A,(DE) 159 | CP 020H 160 | JP Z,SDVSW 161 | DEC DE 162 | LD A,(DE) 163 | ADD A,0FFH 164 | JR C,COMB 165 | INC DE 166 | 167 | LD HL,COMTB 168 | LD A,COMS 169 | LD B,A 170 | CALL CPNAME 171 | COMB: 172 | POP DE 173 | JP NC,JP_HL 174 | COMB2: 175 | EX DE,HL 176 | LD (COMPAT),HL 177 | 178 | LD DE,0 179 | COMST EQU $-2 180 | LD HL,DATA_COM 181 | LD (HL),0 182 | COMPR1: 183 | LD A,(DE) 184 | INC DE 185 | INC HL 186 | LD (HL),A 187 | CP 020H 188 | JR NC,COMPR1 189 | COMPR2: 190 | DEC HL 191 | LD A,(HL) 192 | CP 05CH 193 | JR NZ,COMPR3 194 | LD (HL),0 195 | INC HL 196 | EX DE,HL 197 | CALL FILE 198 | LD HL,N_APPEND 199 | LD DE,DATA_COM+1 200 | LD C,06CH ;_SENV 環境変数の設定 201 | CALL SYSTEM 202 | JR COMPR4 203 | COMPR3: 204 | CP 020H 205 | JR NC,COMPR2 206 | COMPR4: 207 | CALL CEXE4 208 | 209 | LD HL,N_PATH 210 | LD DE,V_PATH 211 | LD B,PATHX 212 | LD C,06BH ;_GENV 環境変数の獲得 213 | CALL SYSTEM 214 | 215 | LD HL,V_PATH 216 | LD (X_PATH),HL 217 | CEX1: 218 | LD HL,(X_PATH) 219 | LD A,(HL) 220 | CP 020H 221 | RET C 222 | CEX2: 223 | LD A,(HL) 224 | CP 020H 225 | JR C,CEX3 226 | CP ';' 227 | JR Z,CEX3 228 | INC HL 229 | JR CEX2 230 | CEX3: 231 | LD (HL),0 232 | CP 020H 233 | JR C,CEX4 234 | INC HL 235 | CEX4: 236 | LD DE,(X_PATH) 237 | LD (X_PATH),HL 238 | LD HL,N_APPEND 239 | LD C,06CH ;_SENV 環境変数の設定 240 | CALL SYSTEM 241 | 242 | CALL CEXE4 243 | JR CEX1 244 | 245 | SDVSW: 246 | POP AF 247 | LD A,(FDRV) 248 | DEC A 249 | LD E,A 250 | LD C,00EH ;(BDOS)カレントドライブの設定 251 | JP SYSTEM0 252 | 253 | OPEN_D2: ;DOS2対応 254 | LD A,(MAJOR_VER) 255 | CP 2 256 | JR C,OPEN 257 | LD DE,PATH_FN1 258 | JR OPEN_D2X 259 | OPEN1_D2: ;DOS2対応 260 | LD A,(MAJOR_VER) 261 | CP 2 262 | JR C,OPEN1 263 | 264 | LD DE,PATH_CCP 265 | OPEN_D2X: 266 | LD IX,SEARCH_IX 267 | LD BC,01040H ;(BDOS)最初のエントリ検索 268 | CALL SYSTEM 269 | PUSH AF 270 | LD DE,PATH_PAR 271 | LD C,05EH ;(BDOS)完全なパス文字列の獲得(_WPATH) 272 | CALL SYSTEM 273 | XOR A 274 | LD (HL),A 275 | LD DE,PATH_PAR 276 | SBC HL,DE 277 | LD (PATH_POS),HL 278 | POP AF 279 | FIB2DIRENT: 280 | OR A 281 | RET NZ 282 | 283 | LD DE,SEARCH_IX+1 ;(FIB)ファイル名 284 | LD HL,DTA_CCP+1 285 | LD C,05CH ;(BDOS)ファイル名の解析 286 | CALL SYSTEM 287 | 288 | LD HL,SEARCH_IX+14 ;(FIB)属性 289 | LD DE,DTA_CCP+1+8+3 290 | LDI 291 | LD DE,DTA_CCP+1+8+3+1+10 292 | LD BC,2+2+2+4 ;最終変更時刻+最終変更日付+開始クラスタ+ファイルサイズ 293 | LDIR 294 | XOR A 295 | RET 296 | 297 | OPEN1: 298 | LD HL,FDRV 299 | OPEN: 300 | LD C,011H ;(BDOS)最初のファイルの検索 301 | OPEN3: 302 | PUSH DE 303 | LD DE,DTA_CCP 304 | CALL SETDTA 305 | PUSH BC 306 | PUSH HL 307 | LD BC,14 308 | ADD HL,BC 309 | LD (OPEN3_SWC),HL 310 | POP HL 311 | POP BC 312 | EX DE,HL 313 | CALL SYSTEM0 314 | POP DE 315 | LD HL,(0) ;Tablacus Disk ROM Lite 階層ディレクトリ 316 | OPEN3_SWC EQU $-2 317 | LD (DTA_CCP+14),HL 318 | RET 319 | 320 | OPEN2_D2: ;DOS2対応 321 | LD A,(MAJOR_VER) 322 | CP 2 323 | JR C,OPEN2 324 | LD IX,SEARCH_IX 325 | LD C,41H ;(BDOS)次のエントリ検索 326 | CALL SYSTEM 327 | JR FIB2DIRENT 328 | OPEN2: 329 | LD C,012H 330 | JR OPEN3 331 | 332 | DEFCB_D2: ;DOS2対応 333 | LD A,(MAJOR_VER) 334 | CP 2 335 | JR C,DEFCB 336 | LD HL,PATH_PAR 337 | LD DE,PATH_CCP 338 | LD BC,64 339 | LDIR 340 | LD HL,(PATH_POS) 341 | LD DE,PATH_CCP 342 | ADD HL,DE 343 | LD B,13 344 | LD DE,SEARCH_IX+1 ;(FIB)ファイル名 345 | DCB4: 346 | LD A,(DE) 347 | OR A 348 | JR Z,DCB5 349 | INC DE 350 | LD (HL),A 351 | INC HL 352 | JR DCB4 353 | DCB5: 354 | LD (HL),0 355 | LD A,(SEARCH_IX+25) ;(FIB)ドライブ番号(1-8) 356 | ADD A,040H 357 | LD DE,PATH_DRV 358 | LD (DE),A 359 | LD C,043H ;_OPEN ファイルハンドルのオープン 360 | LD A,1 ;書き込み禁止 361 | CALL SYSTEM 362 | OR A 363 | RET NZ 364 | LD (HANDLE1),BC 365 | JR SETDTA100 366 | DEFCB: ;Z=Ok NZ=Error 367 | LD DE,DTA_CCP 368 | CALL SYSC0F 369 | OR A 370 | RET NZ 371 | 372 | LD HL,1 373 | LD (DTA_CCP+14),HL 374 | DEC L 375 | LD (DTA_CCP+33),HL 376 | LD (DTA_CCP+35),HL 377 | SETDTA100: 378 | LD DE,DATA 379 | SETDTA: 380 | PUSH BC 381 | PUSH DE 382 | PUSH HL 383 | LD C,01AH ;(BDOS)DTAの設定 384 | CALL SYSTEM 385 | POP HL 386 | POP DE 387 | POP BC 388 | XOR A 389 | RET 390 | 391 | SETDTA1: 392 | LD DE,DTA1 393 | JR SETDTA 394 | 395 | SYSC0F: 396 | LD C,00FH ;(BDOS)ファイルのオープン 397 | SYSTEM0: 398 | CALL SYSTEM 399 | OR A 400 | RET 401 | 402 | C_CD: 403 | CALL SPCUT 404 | LD A,(DE) 405 | CP 020H 406 | JP C,PWD 407 | CD1: 408 | LD C,5AH ;(BDOS)_CHDIR カレントディレクトリの変更 409 | JP SYSTEM 410 | 411 | S27DTA_D2: ;DOS2対応 412 | LD A,(MAJOR_VER) 413 | CP 2 414 | JR C,S27DTA 415 | LD BC,(HANDLE1) 416 | LD DE,DATA 417 | LD C,048H ;(BDOS)ファイルハンドルからの読み出し(_READ) 418 | CALL SYSTEM0 419 | RET Z 420 | CP 0C7H ;.EOF 421 | JR Z,S27EOF 422 | SCF 423 | SBC A,A 424 | RET 425 | S27EOF: 426 | LD A,1 427 | RET 428 | 429 | S27DTA: 430 | LD DE,1 431 | LD (DTA_CCP+14),DE 432 | LD DE,DTA_CCP 433 | S27: 434 | LD C,027H ;(BDOS)ランダム・ブロック・リード 435 | CALL SYSTEM 436 | OR A 437 | RET 438 | 439 | CEXE4: 440 | LD HL,FDRV 441 | LD DE,DTA_CCP 442 | LD BC,1+8 443 | LDIR 444 | LD HL,DTA_CCP+9 445 | LD (HL),'C' 446 | INC HL 447 | LD (HL),'O' 448 | INC HL 449 | LD (HL),'M' 450 | C_EXE: 451 | CALL DEFCB 452 | JP NZ,C_BAT 453 | LD DE,DATA_COM 454 | CALL SETDTA 455 | 456 | LD HL,(SYSTEM+1) 457 | LD DE,DATA_COM 458 | SBC HL,DE 459 | 460 | CALL S27DTA 461 | DEC A 462 | SCF 463 | RET NZ 464 | LD A,H 465 | OR L 466 | SCF 467 | RET Z 468 | LD (COMSIZ),HL 469 | 470 | LD DE,DATA_COM 471 | CALL SETDTA 472 | LD DE,0 473 | COMPAT EQU $-2 474 | CALL SETFCB 475 | 476 | LD HL,N_APPEND 477 | LD DE,PATH_CCP 478 | LD B,PATHX 479 | LD C,06BH ;_GENV 環境変数の獲得 480 | CALL SYSTEM 481 | LD A,(PATH_CCP) 482 | OR A 483 | JR NZ,COM_ENV1 484 | LD C,019H ;(BDOS)カレントドライブ番号の獲得(_CURDRV) 485 | CALL SYSTEM 486 | ADD A,'A' 487 | LD (PATH_CCP),A 488 | LD A,':' 489 | LD (PATH_CCP+1),A 490 | LD A,05CH ;\ 491 | LD (PATH_CCP+2),A 492 | LD B,A ;ドライブ 493 | LD DE,PATH_CCP+2 494 | LD C,059H ;(BDOS)GETCD カレントディレクトリの獲得 495 | CALL SYSTEM 496 | COM_ENV1: 497 | LD DE,DTA_CCP 498 | LD HL,DOS2NAME 499 | CALL FCB2FNAME 500 | LD DE,PATH_CCP 501 | LD HL,DOS2NAME+2 502 | COM_ENV2: 503 | LD A,(DE) 504 | OR A 505 | JR Z,COM_ENV3 506 | INC DE 507 | JR COM_ENV2 508 | COM_ENV3: 509 | DEC DE 510 | LD A,(DE) 511 | INC DE 512 | CP 05CH 513 | JR Z,COM_ENV4 514 | LD A,05CH 515 | LD (DE),A 516 | INC DE 517 | COM_ENV4: 518 | LD A,(HL) 519 | INC HL 520 | LD (DE),A 521 | INC DE 522 | OR A 523 | JR NZ,COM_ENV4 524 | 525 | LD HL,N_PROGRAM 526 | LD DE,PATH_CCP 527 | LD C,06CH ;_SENV 環境変数の設定 528 | CALL SYSTEM 529 | 530 | LD HL,N_PARAMETERS 531 | LD DE,DTA1+1 532 | LD C,06CH ;_SENV 環境変数の設定 533 | CALL SYSTEM 534 | 535 | LD HL,N_APPEND 536 | LD DE,V_APPEND 537 | LD C,06CH ;_SENV 環境変数の設定 538 | CALL SYSTEM 539 | 540 | LD C,60H ;(BDOS)子プロセスの起動 541 | CALL SYSTEM 542 | OR A 543 | JR NZ,COMP1 544 | LD A,B 545 | LD (PROCESS),A 546 | COMP1: 547 | XOR A 548 | LD H,A 549 | LD L,A ;HL=0x0000 550 | LD (TRCFLG),A 551 | DI 552 | LD SP,(SYSTEM+1) 553 | PUSH HL 554 | LD HL,0B0EDH ;LDIR 555 | LD (000FEH),HL 556 | LD HL,DATA_COM 557 | LD DE,00100H 558 | LD BC,0 559 | COMSIZ EQU $-2 560 | EI 561 | JP 000FEH 562 | 563 | C_BAT: 564 | LD HL,DTA_CCP+9 565 | LD (HL),'B' 566 | INC HL 567 | LD (HL),'A' 568 | INC HL 569 | LD (HL),'T' 570 | 571 | CALL DEFCB 572 | RET NZ 573 | 574 | LD HL,DTA_CCP 575 | LD A,(HL) 576 | OR A 577 | JR NZ,CBAT_DS 578 | PUSH HL 579 | LD C,019H ;(BDOS)カレントドライブ番号の獲得(_CURDRV) 580 | CALL SYSTEM 581 | POP HL 582 | INC A 583 | LD (HL),A 584 | CBAT_DS: 585 | LD DE,(FCB_BAT) 586 | LD BC,37 587 | LDIR 588 | C_BAT1: 589 | CALL SETDTA100 590 | CALL FGETC_BAT 591 | LD HL,DTA1+1 592 | JR NZ,END_BATCH 593 | CP 021H ;スペースや改行など制御文字を飛ばす 594 | JR C,C_BAT1 595 | LD (HL),' ' 596 | INC HL 597 | C_BAT2: 598 | LD (HL),A 599 | INC HL 600 | LD A,L 601 | INC A ;L==0FFH 602 | JR Z,RUN_BATCH 603 | CALL FGETC_BAT 604 | JR NZ,RUN_BATCH 605 | CP 020H 606 | JR NC,C_BAT2 607 | RUN_BATCH: 608 | LD A,L 609 | SUB DTA1-1 610 | LD (DTA1),A 611 | CP 4 612 | JR C,END_BATCH 613 | LD (HL),0 614 | LD A,(INTFLG) 615 | CP 3 616 | JP NZ,COMMAND2 617 | END_BATCH: ;バッチファイルを閉じる 618 | LD HL,(FCB_BAT) 619 | LD (HL),0 620 | LD SP,(SYSTEM+1) 621 | JP WSTART 622 | 623 | FGETC_BAT: 624 | LD DE,(FCB_BAT) 625 | FGETC: ;1文字ずつ読み込む 626 | PUSH HL ;Z:成功 627 | LD HL,1 628 | CALL S27 629 | POP HL 630 | LD A,(DATA) 631 | RET 632 | 633 | C_REM: 634 | XOR A 635 | RET 636 | 637 | C_DEL: 638 | CALL SETFCB 639 | LD C,8 ;(BDOS)エコーなしコンソール入力 640 | CALL SYSTEM 641 | LD B,0 642 | LD A,(MAJOR_VER) 643 | CP 2 644 | JR C,CDEL_DOS1 645 | 646 | LD HL,FCB1 647 | CALL OPEN_D2 648 | SCF 649 | DEL1: 650 | RET NZ 651 | LD A,(SEARCH_IX+14); (FIB)属性 652 | BIT 4,A 653 | JR NZ,DEL2 654 | 655 | LD DE,SEARCH_IX 656 | LD C,04DH ;(BDOS)ファイル・サブディレクトリの削除(_DELETE) 657 | CALL SYSTEM0 658 | SCF 659 | RET NZ 660 | DEL2: 661 | CALL OPEN2_D2 662 | JR DEL1 663 | 664 | CDEL_DOS1: 665 | LD C,013H 666 | JR CDEL1 ;(BDOS)ファイルの削除 667 | 668 | C_REN: 669 | LD A,(MAJOR_VER) 670 | CP 2 671 | JR NC,REN_DOS2 672 | CALL SETFCB 673 | LD A,010H ;ディレクトリも対象にする(LSX-Dodgers) 674 | LD (FCB1+13),A ;属性 675 | LD C,017H ;(BDOS)ファイル名の変更 676 | CDEL1: 677 | LD DE,FCB1 678 | REN2: 679 | CALL SYSTEM 680 | ADD A,0FFH 681 | RET 682 | 683 | REN_DOS2: ;DOS2のリネーム(ディレクトリ対応) 684 | CALL SPCUT 685 | LD L,E 686 | LD H,D 687 | REN_D2_1: 688 | LD A,(HL) 689 | CP 020H+1 690 | JR C,REN_D2_2 691 | INC HL 692 | JR REN_D2_1 693 | REN_D2_2: 694 | LD (HL),0 695 | INC HL 696 | LD C,04EH ;(BDOS)ファイルあるいはサブディレクトリ名の変更(_RENAME) 697 | JR REN2 698 | 699 | C_DIR: 700 | CALL FILEC_D2 701 | LD HL,FDRV+1 702 | CALL CWILD1 703 | LD A,0F1H 704 | LD (FDRV+13),A 705 | CALL OPEN1_D2 706 | CDIR1: 707 | OR A 708 | JR NZ,PDSKF 709 | CALL P_NAME 710 | CALL OPEN2_D2 711 | JR CDIR1 712 | 713 | PDSKF: 714 | LD A,(FDRV) 715 | LD E,A 716 | LD C,01BH ;(BDOS)ディスク情報の獲得 717 | CALL SYSTEM 718 | LD C,A ;C←1クラスタ辺りの論理セクタ数 719 | ADD A,001H 720 | RET C ;Aが0FFHだった場合 721 | LD A,8-2 722 | PDS1: ;HL=未使用クラスタの総数 723 | INC A 724 | RR C 725 | JR NC,PDS1 726 | PDS2: ;B←論理セクタのサイズの上位8ビット 727 | INC A 728 | RR B 729 | JR NC,PDS2 730 | LD B,A 731 | 732 | LD DE,0 733 | PDS3: 734 | ADD HL,HL 735 | EX DE,HL 736 | ADC HL,HL 737 | EX DE,HL 738 | DJNZ PDS3 739 | PDSKF1: 740 | CALL PRDEC_DEHL 741 | LD DE,FREE 742 | LD C,9 ;(BDOS)文字列出力 743 | CALL SYSTEM 744 | PWD: 745 | CALL PUTDRV 746 | LD A,05CH ;\ 747 | CALL MSG_A 748 | PDSKF2: ;MSX-DOS2 749 | LD DE,DATA 750 | XOR A 751 | LD (DE),A 752 | LD A,(FDRV) 753 | LD B,A ;ドライブ 754 | LD C,059H ;(BDOS)GETCD カレントディレクトリの獲得 755 | CALL SYSTEM 756 | LD HL,DATA 757 | 758 | CALL MSX 759 | JR LTNL 760 | 761 | MSX1: 762 | CALL MSG_A 763 | MSX: 764 | LD A,(HL) 765 | INC HL 766 | OR A 767 | JR NZ,MSX1 768 | RET 769 | 770 | MSXSLT1: 771 | CALL MSG_A 772 | MSXSLT: 773 | PUSH BC 774 | PUSH HL 775 | LD A,B 776 | CALL RDSLT 777 | POP HL 778 | POP BC 779 | INC HL 780 | OR A 781 | JR NZ,MSXSLT1 782 | RET 783 | 784 | P_NAME: 785 | LD HL,DTA_CCP+1 786 | LD A,(HL) 787 | CP '.' 788 | RET Z 789 | CALL FPRNT 790 | LD A,(DTA_CCP+12) 791 | BIT 4,A 792 | JR Z,DIR3 793 | LD DE,DIRMES 794 | LD C,9 ;(BDOS)文字列出力 795 | CALL SYSTEM 796 | JR DIR6 797 | DIR3: 798 | LD DE,(DTA_CCP+1+01EH) 799 | LD HL,(DTA_CCP+1+01CH) 800 | CALL PRDEC_DEHL 801 | DIR6: 802 | CALL PRTTMS 803 | 804 | LTNL: 805 | LD E,00DH 806 | CALL _PRINT 807 | LD E,00AH 808 | JP _PRINT 809 | 810 | C_PATH: 811 | CALL SPCUT 812 | CP 021H 813 | JR NC,CPATH0 814 | 815 | LD HL,N_PATH 816 | LD DE,V_PATH 817 | LD B,PATHX 818 | LD C,06BH ;_GENV 環境変数の獲得 819 | CALL SYSTEM 820 | LD HL,V_PATH 821 | CPATHP: 822 | LD A,(HL) 823 | INC HL 824 | CP 020H 825 | CCF 826 | JR NC,LTNL 827 | CALL MSG_A 828 | JR CPATHP 829 | CPATH0: 830 | LD HL,V_PATH 831 | CP ';' 832 | JR NZ,CPATH1 833 | INC DE 834 | CPATH1: 835 | EX DE,HL 836 | LD BC,PATHX 837 | LDIR 838 | 839 | LD HL,N_PATH 840 | LD DE,V_PATH 841 | LD C,06CH ;_SENV 環境変数の設定 842 | JP SYSTEM 843 | 844 | PUTDRV: 845 | LD A,(FDRV) 846 | OR A 847 | JR NZ,PUTDRV1 848 | PUSH BC 849 | PUSH DE 850 | PUSH HL 851 | LD C,019H 852 | CALL SYSTEM 853 | POP HL 854 | POP DE 855 | POP BC 856 | INC A 857 | PUTDRV1: 858 | ADD A,'A'-1 859 | CALL MSG_A 860 | LD A,':' 861 | MSG_AR: 862 | JP MSG_A 863 | 864 | PRDEC_HL: 865 | XOR A 866 | PRDEC_AHL: 867 | LD E,A 868 | LD D,0 869 | PRDEC_DEHL: 870 | LD A,2 871 | LD (DEC6+1),A 872 | XOR A 873 | PUSH HL 874 | LD HL,DECBF 875 | LD B,5 876 | CALL FILL_MEMORY 877 | POP HL 878 | 879 | LD C,32 880 | DEC1: 881 | ADD HL,HL 882 | EX DE,HL 883 | ADC HL,HL 884 | EX DE,HL 885 | PUSH HL 886 | LD HL,DECBF+4 887 | LD B,5 888 | DEC2: 889 | LD A,(HL) 890 | ADC A,A 891 | DAA 892 | LD (HL),A 893 | DEC HL 894 | DJNZ DEC2 895 | POP HL 896 | DEC C 897 | JR NZ,DEC1 898 | 899 | LD HL,DECBF 900 | LD A,020H 901 | LD B,4 902 | DEC3: 903 | CALL DEC4 904 | CALL DEC4 905 | INC HL 906 | DJNZ DEC3 907 | DECX: 908 | CALL DEC4 909 | XOR A 910 | DEC4: 911 | RLD 912 | CP 020H 913 | JR Z,DEC6 914 | OR 030H 915 | DEC5: 916 | JR MSG_AR 917 | DEC7: 918 | LD A,020H 919 | JR MSG_AR 920 | DEC6: 921 | LD A,2 922 | OR A 923 | JR Z,DEC7 924 | DEC A 925 | LD (DEC6+1),A 926 | LD A,020H 927 | RET 928 | 929 | FPRNT: 930 | LD B,8 931 | CALL P_N1 932 | LD A,(HL) 933 | CP 020H 934 | JR Z,FPR1 935 | LD A,'.' 936 | FPR1: 937 | CALL MSG_A 938 | LD B,3 939 | 940 | P_N1: 941 | LD A,(HL) 942 | CALL CAP3 943 | CALL MSG_A 944 | INC HL 945 | DJNZ P_N1 946 | RET 947 | 948 | PRTTMS: 949 | LD A,020H 950 | CALL MSG_A 951 | 952 | LD HL,(DTA_CCP+1+24) 953 | LD A,L 954 | OR A 955 | RET Z 956 | SRL H 957 | RLA 958 | RLA 959 | RLA 960 | RLA 961 | AND 00FH 962 | LD D,A 963 | LD IX,V_DATE 964 | PRTTMS1: 965 | LD A,(IX+0) 966 | OR A 967 | JR Z,PRTTMS2 968 | CALL PR_DATE 969 | CALL PR_DATE_SPLITER 970 | JR PRTTMS1 971 | PRTTMS2: 972 | 973 | CALL GET_WIDTH 974 | CP 32+1 975 | JR NC,SHOW_TIME 976 | LD A,01DH 977 | JP MSG_A 978 | SHOW_TIME: 979 | LD HL,(DTA_CCP+1+22) 980 | 981 | LD A,020H 982 | CALL MSG_A 983 | LD A,H 984 | LD H,L 985 | RRA 986 | RR L 987 | RRA 988 | RR L 989 | RRA 990 | RR L 991 | AND 01FH 992 | LD C,A 993 | LD A,(V_TIME) 994 | CP '1' 995 | LD A,C 996 | JR NZ,TIME24 997 | CP 12 998 | JR C,TIME12 999 | SUB 12 1000 | TIME12: 1001 | OR A 1002 | JR NZ,TIME24 1003 | ADD A,12 1004 | TIME24: 1005 | PUSH BC 1006 | CALL PRDEC_A 1007 | LD A,':' 1008 | CALL MSG_A 1009 | LD A,L 1010 | RRCA 1011 | RRCA 1012 | AND 03FH 1013 | CALL PRDEC_A 1014 | 1015 | LD A,':' 1016 | CALL MSG_A 1017 | LD A,H 1018 | AND 01FH 1019 | ADD A,A 1020 | CALL PRDEC_A 1021 | 1022 | LD A,(V_TIME) 1023 | CP '1' 1024 | POP BC 1025 | RET NZ 1026 | LD A,C 1027 | LD E,'a' 1028 | CP 12 1029 | JP C,_PRINT 1030 | LD E,'p' 1031 | JP _PRINT 1032 | 1033 | ; PRINT10 1034 | 1035 | PRDEC_A: 1036 | PUSH HL 1037 | LD B,8 1038 | LD C,A 1039 | XOR A 1040 | PRTA1: 1041 | RLC C 1042 | ADC A,A 1043 | DAA 1044 | DJNZ PRTA1 1045 | LD HL,DECBF 1046 | LD (HL),A 1047 | XOR A 1048 | CALL DECX 1049 | POP HL 1050 | RET 1051 | 1052 | PR_DATE: 1053 | LD A,(IX+0) 1054 | CP 020H 1055 | RET C 1056 | CALL CAP 1057 | CP 'D' 1058 | JR Z,PR_DAY 1059 | CP 'M' 1060 | JR Z,PR_MONTH 1061 | CP 'Y' 1062 | JR NZ,PR_DATE1 1063 | LD C,A 1064 | LD A,(IX+2) 1065 | CALL CAP 1066 | CP C 1067 | JR NZ,YEAR2 1068 | LD A,H ;YEAR 1069 | ADD A,80+256-100 1070 | LD A,19 1071 | ADC A,0 1072 | CALL PRDEC_A ;年4桁 1073 | YEAR2: 1074 | LD A,H ;YEAR 1075 | ADD A,80 1076 | CALL PRDEC_A 1077 | JR PR_DATE1 1078 | PR_MONTH: 1079 | LD C,A 1080 | LD A,(IX+2) 1081 | CALL CAP 1082 | CP C 1083 | JR NZ,MONTH2 1084 | PUSH HL ;月を文字列で表示 Jan等 1085 | PUSH DE 1086 | LD A,D 1087 | DEC A 1088 | ADD A,A 1089 | ADD A,A 1090 | LD HL,S_MONTH 1091 | LD D,0 1092 | LD E,A 1093 | ADD HL,DE 1094 | CALL MSX 1095 | POP DE 1096 | POP HL 1097 | JR PR_DATE1 1098 | MONTH2: 1099 | LD A,D ;月を数字で表示 1100 | CALL PRDEC_A 1101 | JR PR_DATE1 1102 | PR_DAY: 1103 | LD A,L 1104 | AND 01FH 1105 | CALL PRDEC_A 1106 | PR_DATE1: 1107 | INC IX 1108 | LD A,(IX+0) 1109 | CALL CAP 1110 | CP 'A' 1111 | RET C 1112 | CP 'Z'+1 1113 | JR C,PR_DATE1 1114 | RET 1115 | PR_DATE_SPLITER: 1116 | LD A,(IX+0) 1117 | CP 020H 1118 | RET C 1119 | INC IX 1120 | JP MSG_A 1121 | 1122 | SETFCB: 1123 | CALL SPCUT 1124 | LD A,(DE) 1125 | CP 020H 1126 | JR C,SETFCBA 1127 | DEC DE 1128 | SETFCBA: 1129 | PUSH DE 1130 | LD HL,FCB1 1131 | LD DE,FCB1+1 1132 | LD BC,00023H 1133 | LD (HL),B ;B=0 1134 | LDIR 1135 | POP DE 1136 | PUSH DE 1137 | LD HL,FCB1 1138 | LD IX,PATH_FN1 1139 | CALL _SYS29 ;ファイル名の解析 1140 | LD HL,FCB2 1141 | LD IX,PATH_FN2 1142 | CALL _SYS29 ;ファイル名の解析 1143 | POP HL 1144 | LD BC,05000H 1145 | LD DE,00081H 1146 | SETFCB1: 1147 | LD A,(HL) 1148 | INC HL 1149 | CP 020H 1150 | JR C,SETFCB2 1151 | LD (DE),A 1152 | INC DE 1153 | INC C 1154 | DJNZ SETFCB1 1155 | SETFCB2: 1156 | LD A,C 1157 | LD (DTA1),A 1158 | INC B 1159 | XOR A 1160 | SETFCB3: 1161 | LD (DE),A 1162 | INC DE 1163 | DJNZ SETFCB3 1164 | RET 1165 | 1166 | C_COPY: 1167 | CALL SETFCB 1168 | LD A,(MAJOR_VER) 1169 | CP 2 1170 | JR C,COPYI0 1171 | CALL IS_FOLDER_FN2 1172 | JR C,COPYI0 1173 | LD HL,FDRV+1 1174 | LD B,8+3 1175 | CALL FILE10 1176 | COPYI0: 1177 | LD A,(FDRV) 1178 | LD B,A 1179 | OR A 1180 | JR NZ,COPYI1 1181 | PUSH BC 1182 | LD C,019H ;(BDOS)_CURDRV デフォルトドライブの獲得 1183 | CALL SYSTEM 1184 | INC A 1185 | LD (FDRV),A 1186 | POP BC 1187 | COPYI1: 1188 | ADD A,040H 1189 | LD (CUR_DRV),A 1190 | LD DE,CUR_PATH 1191 | LD C,059H ;(BDOS)カレントディレクトリの獲得(_GETCD) 1192 | CALL SYSTEM 1193 | CALL COPYSUB 1194 | RES_CUR_PATH: 1195 | LD DE,CUR_DRV 1196 | SET_CUR_PATH: 1197 | PUSH AF 1198 | LD A,(FDRV) 1199 | LD B,A 1200 | LD C,05AH ;(BDOS)カレントディレクトリの変更(_CHDIR) 1201 | CALL SYSTEM 1202 | POP AF 1203 | RET 1204 | COPYSUB: 1205 | LD DE,ZERO 1206 | CALL FILEC2 1207 | LD HL,FCB2 1208 | CALL S29X1 1209 | 1210 | LD A,010H 1211 | LD (FCB1+13),A 1212 | LD HL,FCB2+1 1213 | CALL CWILD1 1214 | COPY0: 1215 | CALL CWILD 1216 | LD HL,FCB1 1217 | CALL OPEN_D2 1218 | SCF 1219 | COPY1: 1220 | RET NZ 1221 | CALL DEFCB_D2 1222 | 1223 | LD A,(DTA_CCP+12) 1224 | BIT 4,A 1225 | JR Z,COPY1A 1226 | 1227 | LD HL,FCB1+1 1228 | CALL CHKWILD 1229 | JR C,COPY9 1230 | 1231 | LD A,020H 1232 | LD (FCB1+1),A 1233 | LD HL,(DTA_CCP+26) 1234 | INC HL 1235 | LD (FCB1+14),HL 1236 | JR COPY0 1237 | 1238 | COPY8: 1239 | CALL SHOW_OK 1240 | COPY9: 1241 | CALL RES_CUR_PATH 1242 | CALL OPEN2_D2 1243 | JR COPY1 1244 | 1245 | COPY1A: 1246 | LD HL,FCB2 1247 | LD DE,FDRV 1248 | LD BC,DTA_CCP+2 1249 | LDI 1250 | LD A,11 1251 | COPY2: 1252 | PUSH AF 1253 | LD A,(HL) 1254 | CP '?' 1255 | JR NZ,COPY3 1256 | LD A,(BC) 1257 | COPY3: 1258 | LD (DE),A 1259 | INC BC 1260 | INC DE 1261 | INC HL 1262 | POP AF 1263 | DEC A 1264 | JR NZ,COPY2 1265 | LD BC,16-11 1266 | LDIR 1267 | PUTNAME: 1268 | LD HL,FCB1+1 1269 | CALL CHKWILD 1270 | JR NC,PUTN1 1271 | LD HL,FDRV+1 1272 | CALL FPRNT 1273 | LD A,020H 1274 | CALL MSG_A 1275 | PUTN1: 1276 | LD DE,PATH_FN2 1277 | CALL SET_CUR_PATH 1278 | 1279 | LD DE,FDRV 1280 | LD C,016H ;(BDOS)ファイルの作成 1281 | CALL SYSTEM0 1282 | JP NZ,COPYE2 1283 | LD H,A ;A=0 1284 | LD L,A 1285 | LD (FDRV+33),HL ;(FCB)ランダム・レコード 1286 | LD (FDRV+35),HL 1287 | INC L ;HL=1 1288 | LD (FDRV+14),HL ;(FCB)レコード・サイズ 1289 | COPY6: 1290 | CALL BUFSIZ 1291 | CALL S27DTA_D2 1292 | LD B,A 1293 | INC A 1294 | JP Z,COPYE 1295 | LD A,H 1296 | OR L 1297 | JR Z,COPY7 1298 | LD DE,FDRV 1299 | PUSH BC 1300 | LD C,026H ;(BDOS)ランダム・ブロック・ライト 1301 | CALL SYSTEM 1302 | POP BC 1303 | OR A 1304 | JR NZ,COPYE 1305 | DJNZ COPY6 1306 | COPY7: 1307 | LD A,(MAJOR_VER) 1308 | CP 2 1309 | JR NC,COPY7_MSX2 ;DOS2はFCBの仕様が違う 1310 | LD A,(DTA_CCP+13) ;(FCB)属性(アトリビュート) 1311 | LD (FDRV+13),A ;(FCB)属性(アトリビュート) 1312 | LD HL,DTA_CCP+20 1313 | LD DE,FDRV+20 ;(FCB)更新日時 1314 | LD BC,4 1315 | LDIR 1316 | COPY7_MSX2: 1317 | LD DE,FDRV 1318 | LD C,010H ;(BDOS)ファイルのクローズ 1319 | CALL SYSTEM0 1320 | 1321 | JR NZ,COPYE 1322 | LD A,(MAJOR_VER) 1323 | CP 2 1324 | JR C,COPY_DOS2DT 1325 | 1326 | LD BC,(HANDLE1) 1327 | LD C,045H ;(BDOS)ファイルハンドルのクローズ(_CLOSE) 1328 | CALL SYSTEM 1329 | 1330 | LD DE,PATH_FN2 1331 | CALL SET_CUR_PATH 1332 | 1333 | LD DE,FDRV 1334 | LD HL,DOS2NAME 1335 | CALL FCB2FNAME 1336 | 1337 | LD A,(SEARCH_IX+14); (FIB)属性 1338 | LD L,A 1339 | LD DE,DOS2NAME 1340 | LD A,1 1341 | LD C,050H ;(BDOS)_ATTR ファイル属性の獲得・設定 1342 | CALL SYSTEM0 1343 | 1344 | LD IX,(SEARCH_IX+15) ;(FIB)更新時間 1345 | LD HL,(SEARCH_IX+17) ;(FIB)更新日 1346 | LD DE,DOS2NAME 1347 | LD A,1 1348 | LD C,51H ;(BDOS)_FTIME ファイルの日付および時刻の獲得・設定 1349 | CALL SYSTEM0 1350 | COPY_DOS2DT: 1351 | JP COPY8 1352 | 1353 | COPYE: 1354 | LD BC,(HANDLE1) 1355 | LD C,045H ;(BDOS)ファイルハンドルのクローズ(_CLOSE) 1356 | CALL SYSTEM 1357 | LD DE,FDRV 1358 | LD C,013H ;(BDOS)ファイルの削除 1359 | CALL SYSTEM 1360 | COPYE2: 1361 | SCF 1362 | RET 1363 | 1364 | FCB2FNAME: 1365 | LD A,(DE) 1366 | INC DE 1367 | ADD A,040H 1368 | LD (HL),A 1369 | INC HL 1370 | LD (HL),':' 1371 | INC HL 1372 | 1373 | LD B,8 1374 | FCB2FNAME1: 1375 | LD A,(DE) 1376 | CP 020H+1 1377 | JR C,FCB2FNAME2 1378 | INC DE 1379 | LD (HL),A 1380 | INC HL 1381 | DJNZ FCB2FNAME1 1382 | JR FCB2FNAME3 1383 | FCB2FNAME2: 1384 | INC DE 1385 | DJNZ FCB2FNAME2 1386 | FCB2FNAME3: 1387 | LD A,(DE) 1388 | CP 020H+1 1389 | JR C,FCB2FNAME5 1390 | LD (HL),'.' 1391 | INC HL 1392 | LD B,3 1393 | FCB2FNAME4: 1394 | LD A,(DE) 1395 | INC DE 1396 | CP 020H+1 1397 | JR C,FCB2FNAME5 1398 | LD (HL),A 1399 | INC HL 1400 | DJNZ FCB2FNAME4 1401 | FCB2FNAME5: 1402 | LD (HL),0 1403 | RET 1404 | 1405 | C_TYPE: 1406 | CALL SETFCB 1407 | LD HL,FCB1 1408 | CALL OPEN_D2 1409 | SCF 1410 | RET NZ 1411 | CALL TYPE1 1412 | XOR A 1413 | RET 1414 | TYPE1: 1415 | RET NZ 1416 | CALL DEFCB_D2 1417 | LD A,01AH 1418 | CALL MSG_A 1419 | TYPE2: 1420 | CALL BUFSIZ 1421 | CALL S27DTA_D2 1422 | ADD A,0FEH 1423 | RET C 1424 | LD A,H 1425 | OR L 1426 | JR Z,TYPEE 1427 | LD BC,DATA 1428 | TYPE3: 1429 | LD A,(BC) 1430 | INC BC 1431 | CP 01AH 1432 | JR Z,TYPEE 1433 | LD E,A 1434 | PUSH BC 1435 | PUSH HL 1436 | LD C,2 ;(BDOS)コンソール出力 1437 | CALL SYSTEM 1438 | POP HL 1439 | POP BC 1440 | DEC HL 1441 | LD A,H 1442 | OR L 1443 | JR NZ,TYPE3 1444 | JR TYPE2 1445 | TYPEE: 1446 | LD A,(MAJOR_VER) ;DOS2対応 1447 | CP 2 1448 | JR C,TYPEE2 1449 | LD BC,(HANDLE1) 1450 | LD C,045H ;(BDOS)ファイルハンドルのクローズ(_CLOSE) 1451 | TYPEE2: 1452 | CALL OPEN2_D2 1453 | AND A 1454 | JR TYPE1 1455 | 1456 | CWILD: 1457 | LD HL,FCB1+1 1458 | CWILD1: 1459 | LD A,(HL) 1460 | CP 020H 1461 | RET NZ 1462 | CWILD2: 1463 | LD D,H 1464 | LD E,L 1465 | INC DE 1466 | LD BC,10 1467 | LD (HL),'?' 1468 | LDIR 1469 | RET 1470 | 1471 | BUFSIZ: 1472 | LD A,(SYSTEM+2) 1473 | SUB (DATA/256)+1 1474 | AND 0F8H 1475 | LD H,A 1476 | LD L,0 1477 | RET 1478 | 1479 | JP_HL: JP (HL) 1480 | 1481 | _PRINT: 1482 | PUSH BC 1483 | PUSH DE 1484 | PUSH HL 1485 | PUSH IX 1486 | LD C,6 1487 | CALL SYSTEM 1488 | POP IX 1489 | POP HL 1490 | POP DE 1491 | POP BC 1492 | OR A 1493 | RET 1494 | 1495 | PRTHX: 1496 | PUSH AF 1497 | RLCA 1498 | RLCA 1499 | RLCA 1500 | RLCA 1501 | CALL PRTHX1 1502 | POP AF 1503 | PRTHX1: 1504 | CALL ASC 1505 | MSG_A: 1506 | PUSH AF 1507 | PUSH BC 1508 | PUSH DE 1509 | PUSH HL 1510 | PUSH IX 1511 | LD E,A 1512 | LD C,2 1513 | CALL SYSTEM 1514 | POP IX 1515 | POP HL 1516 | POP DE 1517 | POP BC 1518 | POP AF 1519 | RET 1520 | 1521 | ASC: 1522 | AND 00FH 1523 | OR '0' 1524 | CP '9' 1525 | RET C 1526 | ADD A,7 1527 | RET 1528 | ; FILE 1529 | FILEC_D2: ;DOS2対応 1530 | LD A,(MAJOR_VER) 1531 | CP 2 1532 | JR C,FILEC 1533 | PUSH BC 1534 | PUSH DE 1535 | PUSH HL 1536 | CALL SPCUT 1537 | LD HL,PATH_CCP 1538 | LD B,64 1539 | PATHCD1: 1540 | LD A,(DE) 1541 | INC DE 1542 | CP 020H 1543 | JR NC,PATHCD2 1544 | LD A,0 1545 | PATHCD2: 1546 | LD (HL),A 1547 | JR C,PATHCD3 1548 | INC HL 1549 | DJNZ PATHCD1 1550 | PATHCD3: 1551 | POP HL 1552 | POP DE 1553 | POP BC 1554 | FILEC: 1555 | CALL FILE 1556 | FILEC2: 1557 | LD A,(FDRV+1) 1558 | CP 020H 1559 | RET Z 1560 | JR SETDIR1 1561 | 1562 | FILE: 1563 | LD A,(MAJOR_VER) ;Tablacus Disk ROM Lite 1564 | CP 1 1565 | JR Z,FILE_TDRL 1566 | FILEX: 1567 | XOR A 1568 | LD (FDRV),A 1569 | LD H,A 1570 | LD L,A 1571 | LD (FDRV+14),HL 1572 | CALL SPCUT 1573 | CALL CCHK3 1574 | JR Z,DEVI1 1575 | INC DE 1576 | LD A,(DE) 1577 | DEC DE 1578 | CP ':' 1579 | JR NZ,DEVI1 1580 | LD A,(DE) ;DRIVE 1581 | CALL CAP 1582 | SUB '@' 1583 | INC DE 1584 | INC DE 1585 | LD (FDRV),A 1586 | DEVI1: 1587 | LD A,(DE) 1588 | SUB 05CH ;\ 1589 | JR NZ,NOROOT 1590 | LD L,A ;A=0でH=0のはずなのでHL=0 1591 | LD (FDRV+26),HL 1592 | INC L 1593 | LD (FDRV+14),HL 1594 | INC DE 1595 | NOROOT: 1596 | 1597 | SETDIR: 1598 | CALL FILED 1599 | LD A,(DE) 1600 | CP 05CH ;\ 1601 | RET NZ 1602 | INC DE 1603 | SETDIR1: 1604 | RET 1605 | 1606 | FILE_TDRL: 1607 | LD HL,FDRV 1608 | LD C,029H ;(BDOS) パス名の解析 1609 | JP SYSTEM 1610 | 1611 | FILED: 1612 | CALL FILEI 1613 | 1614 | LD B,8 1615 | FILE2: 1616 | CALL CCHKF 1617 | RET Z 1618 | CP '*' 1619 | JR Z,FILE9 1620 | CP '.' 1621 | JR Z,FILE4 1622 | LD (HL),A 1623 | INC HL 1624 | DJNZ FILE2 1625 | 1626 | FILE3: 1627 | CALL CCHKF 1628 | RET Z 1629 | CP '.' 1630 | JR NZ,FILE3 1631 | 1632 | FILE4: 1633 | LD HL,FNAME+8 1634 | LD B,3 1635 | 1636 | FILE4L: 1637 | CALL CCHKF 1638 | RET Z 1639 | CP '.' 1640 | JR NZ,FILE12 1641 | LD (FNAME),A ;Parent directory(..) 1642 | LD (FNAME+1),A 1643 | LD A,020H 1644 | FILE12: 1645 | CP '*' 1646 | JR Z,FILE10 1647 | LD (HL),A 1648 | INC HL 1649 | DJNZ FILE4L 1650 | RET 1651 | 1652 | FILE9: ;名前の*処理、名前の残りを?で埋める 1653 | CALL FILE10 1654 | JR FILE3 1655 | 1656 | FILE10: 1657 | LD A,'?' 1658 | 1659 | FILL_MEMORY: ;HLからBバイトAで埋める 1660 | LD (HL),A 1661 | INC HL 1662 | DJNZ FILL_MEMORY 1663 | RET 1664 | 1665 | FILEI: ;名前+拡張子をスペースで初期化 1666 | LD A,020H 1667 | LD BC,11*256 1668 | LD HL,FNAME 1669 | PUSH HL 1670 | CALL FILL_MEMORY 1671 | POP HL 1672 | RET 1673 | 1674 | CCHKF: 1675 | LD A,(DE) 1676 | CALL CCHK2 1677 | RET Z 1678 | JP FKAN 1679 | 1680 | CCHK2: 1681 | INC C 1682 | DEC C 1683 | RET NZ 1684 | CCHK3: ;ZF=1 で使えない文字 1685 | CP '+' 1686 | RET Z 1687 | CP ',' 1688 | RET Z 1689 | CP '/' 1690 | RET Z 1691 | CP ':' 1692 | RET Z 1693 | CP ';' 1694 | RET Z 1695 | CP '=' 1696 | RET Z 1697 | CP 05CH ;\ 1698 | RET Z 1699 | CP 020H 1700 | RET NC 1701 | CP A ;Z=1 1702 | RET 1703 | 1704 | SS1: 1705 | INC DE 1706 | SPCUT: ;スペースをカット 1707 | LD A,(DE) 1708 | CP 020H 1709 | JR Z,SS1 1710 | RET 1711 | 1712 | TOZERO: 1713 | PUSH DE 1714 | TZ1: 1715 | LD A,(DE) 1716 | CP 20H 1717 | JR C,TZ2 1718 | INC DE 1719 | JR TZ1 1720 | TZ2: 1721 | XOR A 1722 | LD (DE),A 1723 | POP DE 1724 | RET 1725 | 1726 | CAP: 1727 | CP 'a' 1728 | RET C 1729 | CP 'z'+1 1730 | RET NC 1731 | SUB 020H 1732 | RET 1733 | CAP2: 1734 | CALL CAP 1735 | CAP3: 1736 | CALL CAP4 1737 | CP 021H 1738 | RET NC 1739 | LD A,020H 1740 | RET 1741 | CAP4: 1742 | CP 5 1743 | RET NZ 1744 | LD A,0E5H 1745 | RET 1746 | 1747 | FKANC: 1748 | BIT 0,C 1749 | CALL Z,CAP2 1750 | JR FKANX 1751 | FKAN: ;漢字チェック 1752 | INC DE 1753 | FKANX: 1754 | BIT 0,C 1755 | RES 0,C 1756 | RET NZ 1757 | CP 080H 1758 | RET C 1759 | CP 0A0H 1760 | JR C,FKAN1 1761 | CP 0E0H 1762 | RET C 1763 | FKAN1: 1764 | INC C 1765 | AND A 1766 | RET 1767 | 1768 | CHKWILDX: 1769 | PUSH IY 1770 | POP HL 1771 | INC HL 1772 | CHKWILD: 1773 | LD B,11 1774 | LD A,'?' 1775 | CHKWIL1: 1776 | CP (HL) 1777 | INC HL 1778 | SCF 1779 | RET Z 1780 | DJNZ CHKWIL1 1781 | XOR A 1782 | RET 1783 | 1784 | CPNAME: 1785 | PUSH BC 1786 | PUSH DE 1787 | LD DE,CPBUF 1788 | LD BC,7 1789 | LDIR 1790 | POP DE 1791 | PUSH DE 1792 | PUSH HL 1793 | LD HL,CPBUF 1794 | CALL CPFILE 1795 | POP HL 1796 | POP DE 1797 | POP BC 1798 | JR NZ,CPNAME1 1799 | LD A,(HL) 1800 | INC HL 1801 | LD H,(HL) 1802 | LD L,A 1803 | RET 1804 | CPNAME1: 1805 | INC HL 1806 | INC HL 1807 | DJNZ CPNAME 1808 | SCF 1809 | RET 1810 | 1811 | CPFILE: 1812 | PUSH BC 1813 | LD BC,00B00H 1814 | CPSTR1: 1815 | LD A,(DE) 1816 | CP '?' ;Wild card 1817 | JR Z,CPSTR2 1818 | LD A,(HL) 1819 | CALL FKANC 1820 | PUSH HL 1821 | LD H,A 1822 | LD A,(DE) 1823 | RLC C 1824 | CALL FKANC 1825 | RRC C 1826 | CP H ;CP (HL),(DE) 1827 | POP HL 1828 | JR NZ,CPSTR3 1829 | CPSTR2: 1830 | INC DE 1831 | INC HL 1832 | DJNZ CPSTR1 1833 | CPSTR3: 1834 | POP BC 1835 | RET 1836 | 1837 | CPFILE2: 1838 | LD A,(IY+13) ;(FCB)属性(アトリビュート) 1839 | OR 0E1H 1840 | CPL 1841 | AND (HL) 1842 | RET 1843 | 1844 | _SYS29: ;(BDOS)ファイル名の解析 1845 | PUSH BC 1846 | PUSH DE 1847 | LD B,64 1848 | CALL SPCUT 1849 | LD (DIR_CK),IX 1850 | D2FN1: 1851 | LD A,(DE) 1852 | CP 020H+1 1853 | JR C,D2FN2 1854 | INC DE 1855 | LD (IX+0),A 1856 | INC IX 1857 | DJNZ D2FN1 1858 | D2FN2: 1859 | LD (IX+0),0 1860 | LD A,(IX-1) 1861 | CP 05CH ;\ 1862 | JR NZ,D2FN3 1863 | LD A,(IX-2) 1864 | CP ':' 1865 | JR Z,D2FN3 1866 | 1867 | LD (IX-1),0 1868 | LD DE,(DIR_CK) 1869 | CALL IS_FOLDER 1870 | JR C,D2FN3 1871 | D2FN4: 1872 | LD (IX-1),05CH ;\ 1873 | D2FN3: 1874 | POP DE 1875 | POP BC 1876 | PUSH BC 1877 | PUSH HL 1878 | CALL FILE 1879 | POP HL 1880 | POP BC 1881 | S29X1: 1882 | PUSH BC 1883 | PUSH DE 1884 | PUSH HL 1885 | EX DE,HL 1886 | LD HL,FDRV 1887 | LD BC,13 1888 | LDIR 1889 | LD (HL),B ;B=0 1890 | LD C,3 1891 | LDIR 1892 | POP HL 1893 | POP DE 1894 | POP BC 1895 | XOR A 1896 | RET 1897 | GET_WIDTH: 1898 | LD A,(IS_MSX) 1899 | OR A 1900 | JR Z,NOT_MSX 1901 | LD A,(LINLEN) 1902 | RET 1903 | NOT_MSX: 1904 | PUSH HL 1905 | LD HL,(1) 1906 | LD L,0B1H 1907 | LD A,(HL) 1908 | POP HL 1909 | RET 1910 | 1911 | IS_FOLDER_FN2: 1912 | LD DE,PATH_FN2 1913 | CALL IS_FOLDER2 1914 | RET C 1915 | 1916 | LD DE,0 1917 | LD (PATH_FN2_SL),DE 1918 | LD DE,PATH_FN2 1919 | IF2_1: 1920 | LD A,(DE) 1921 | INC DE 1922 | CP '\\' 1923 | JR NZ,IF2_2 1924 | LD (PATH_FN2_SL),DE 1925 | IF2_2: 1926 | OR A 1927 | JR NZ,IF2_1 1928 | LD DE,(PATH_FN2_SL) 1929 | LD A,D 1930 | OR E 1931 | JR Z,IS_FOLDER_FN2_E 1932 | XOR A 1933 | DEC DE 1934 | LD (DE),A 1935 | 1936 | LD DE,PATH_FN2 1937 | CALL IS_FOLDER 1938 | JR NC,IS2_3 1939 | LD A,'\\' 1940 | DEC DE 1941 | LD (DE),A 1942 | IS_FOLDER_FN2_E: 1943 | LD DE,PATH_FN2 1944 | SCF 1945 | RET 1946 | IS2_3: 1947 | LD DE,(PATH_FN2_SL) 1948 | LD HL,FCB2 1949 | CALL _SYS29 1950 | SCF 1951 | RET 1952 | 1953 | IS_FOLDER: ;out CF=0:Folder 1954 | CALL SPCUT 1955 | LD A,(DE) 1956 | ADD A,0FFH 1957 | RET NC 1958 | XOR A 1959 | LD C,050H ;(BDOS)_ATTR ファイル属性の獲得・設定 1960 | PUSH DE 1961 | CALL SYSTEM0 1962 | POP DE 1963 | SCF 1964 | RET NZ 1965 | LD A,L 1966 | AND 010H 1967 | SUB 1 1968 | RET 1969 | 1970 | IS_FOLDER2: ;out CF=0:Folder 1971 | CALL SPCUT 1972 | LD A,(DE) 1973 | ADD A,0FFH 1974 | RET NC 1975 | XOR A 1976 | LD C,050H ;(BDOS)_ATTR ファイル属性の獲得・設定 1977 | PUSH DE 1978 | CALL SYSTEM0 1979 | POP DE 1980 | RET NZ 1981 | LD A,L 1982 | AND 010H 1983 | SUB 1 1984 | RET 1985 | 1986 | C_MODE: 1987 | LD A,(IS_MSX) 1988 | OR A 1989 | RET Z 1990 | LD C,41 1991 | LD A,(EXBRSA) 1992 | OR A 1993 | JR Z,MODE_MSX1 1994 | LD C,81 1995 | MODE_MSX1: 1996 | PUSH BC 1997 | CALL GETNUM 1998 | POP BC 1999 | LD A,L 2000 | CP C 2001 | JR NC,MODE1 2002 | OR A 2003 | JR Z,MODE1 2004 | CP 33 2005 | JR C,MODE32 2006 | LD (LINL40),A 2007 | LD IX,INITXT 2008 | CALL CALLROM 2009 | LD IX,SETTXT 2010 | CALLROM: 2011 | LD IY,(EXPTBL) ;メインROMスロット 2012 | JP CALSLT 2013 | MODE1: 2014 | LD A,(LINLEN) 2015 | CALL PRDEC_A 2016 | JP LTNL 2017 | MODE32: 2018 | LD (LINL32),A 2019 | LD IX,INIT32 2020 | CALL CALLROM 2021 | LD IX,SETT32 2022 | JR CALLROM 2023 | 2024 | C_PAUSE: 2025 | CALL SPCUT 2026 | EX DE,HL 2027 | LD A,(HL) 2028 | OR A 2029 | JR NZ,C_PAUSE1 2030 | LD HL,PAUSE 2031 | C_PAUSE1: 2032 | CALL MSX 2033 | LD C,7 ;(BDOS)コンソール直接入力(_DIRIN) 2034 | CALL SYSTEM 2035 | CP 3 2036 | JP Z,END_BATCH 2037 | JP LTNL 2038 | 2039 | C_ECHO: 2040 | CALL SPCUT 2041 | EX DE,HL 2042 | CALL MSX 2043 | JP LTNL 2044 | 2045 | C_MKDIR: 2046 | CALL SPCUT 2047 | LD BC,09044H ;B=新規作成+ディレクトリ/C=(BDOS)ファイルハンドルの作成(_CREATE) 2048 | CALL SYSTEM 2049 | ADD A,0FFH 2050 | RET C 2051 | LD C,045H ;(BDOS)ファイルハンドルのクローズ(_CLOSE) 2052 | CALL SYSTEM 2053 | SHOW_OK: 2054 | LD DE,OK 2055 | LD C,9 ;(BDOS)文字列出力 2056 | CALL SYSTEM 2057 | JP LTNL 2058 | 2059 | C_RMDIR: 2060 | CALL IS_FOLDER 2061 | RET C 2062 | LD C,04DH ;(BDOS)ファイル・サブディレクトリの削除 2063 | CALL SYSTEM 2064 | ADD A,0FFH 2065 | RET C 2066 | JR SHOW_OK 2067 | 2068 | C_SET: 2069 | CALL SPCUT 2070 | LD (CSET_PARAM),DE 2071 | CSET2: 2072 | LD A,(DE) 2073 | CP 020H 2074 | JR C,CSET_LIST 2075 | SUB '=' 2076 | JR Z,CSET_SET 2077 | INC DE 2078 | JR CSET2 2079 | CSET_SET: 2080 | LD (DE),A 2081 | INC DE 2082 | CSET_PARAM EQU $+1 2083 | LD HL,0 2084 | LD C,06CH ;_SENV 環境変数の設定 2085 | CALL SYSTEM 2086 | INIT_VAR: ;環境変数の初期化 2087 | LD HL,N_DATE 2088 | LD DE,V_DATE 2089 | LD B,16 2090 | LD C,06BH ;_GENV 環境変数の獲得 2091 | CALL SYSTEM 2092 | 2093 | LD HL,N_TIME 2094 | LD DE,V_TIME 2095 | LD B,3 2096 | LD C,06BH ;_GENV 環境変数の獲得 2097 | CALL SYSTEM 2098 | 2099 | LD HL,N_APPEND 2100 | LD DE,V_APPEND 2101 | LD B,PATHX 2102 | LD C,06BH ;_GENV 環境変数の獲得 2103 | JP SYSTEM 2104 | 2105 | CSET_LIST: 2106 | LD A,10 2107 | LD (CSET_DATA),A 2108 | LD DE,1 2109 | CSET1: 2110 | PUSH DE 2111 | LD BC,0FF6DH ;_FENV 環境変数の検索 2112 | LD HL,DATA_COM 2113 | LD (HL),0 2114 | CALL SYSTEM 2115 | OR A 2116 | JR NZ,CSET_ERROR 2117 | LD HL,DATA_COM 2118 | LD A,(HL) 2119 | OR A 2120 | JR Z,CSET_ERROR 2121 | CALL MSX 2122 | LD E,'=' 2123 | CALL _PRINT 2124 | LD HL,DATA_COM 2125 | LD DE,DATA_COM+256 2126 | LD BC,0FF6BH ;_GENV 環境変数の獲得 2127 | CALL SYSTEM 2128 | LD HL,DATA_COM+256 2129 | CALL MSX 2130 | CALL LTNL 2131 | LD A,10 2132 | LD (CSET_DATA),A 2133 | CSET_NEXT: 2134 | POP DE 2135 | INC DE 2136 | LD A,D 2137 | OR E 2138 | JR NZ,CSET1 2139 | RET 2140 | CSET_ERROR: 2141 | LD HL,CSET_DATA 2142 | DEC (HL) 2143 | JR NZ,CSET_NEXT 2144 | CSET_END: 2145 | POP DE 2146 | RET 2147 | 2148 | C_FORMAT: 2149 | LD A,(IS_MSX) 2150 | OR A 2151 | RET Z 2152 | LD A,(MAJOR_VER) 2153 | CP 2 2154 | JR NC,FORMAT2 2155 | FORMAT1: 2156 | LD IY,(EXPTBL) ;メインROMスロット 2157 | LD IX,FORMAT 2158 | JP CALSLT 2159 | FORMAT2: 2160 | CALL SETFCB 2161 | LD A,(FCB1) 2162 | OR A 2163 | JR Z,FORMAT1 2164 | LD B,A 2165 | XOR A 2166 | LD C,067H ;(_FORMAT)ディスクのフォーマット 2167 | CALL SYSTEM 2168 | OR A 2169 | JR NZ,FORMAT1 2170 | CALL MSXSLT 2171 | LD HL,PROMPT 2172 | CALL MSX 2173 | FORMAT3: 2174 | LD C,8 ;(BDOS)エコーなしコンソール入力(_INNOE) 2175 | CALL SYSTEM 2176 | SUB '0'+1 2177 | JR C,FORMAT3 2178 | INC A 2179 | CP 10 2180 | JR NC,FORMAT3 2181 | PUSH AF 2182 | CALL LTNL 2183 | LD HL,PAUSE 2184 | CALL MSX 2185 | LD C,8 ;(BDOS)エコーなしコンソール入力(_INNOE) 2186 | CALL SYSTEM 2187 | CALL LTNL 2188 | POP AF 2189 | LD BC,(FCB1-1) 2190 | LD HL,08000H 2191 | LD DE,04000H 2192 | LD C,067H ;(_FORMAT)ディスクのフォーマット 2193 | JP SYSTEM 2194 | 2195 | C_RAMDISK: 2196 | LD A,(IS_MSX) 2197 | OR A 2198 | RET Z 2199 | LD A,(MAJOR_VER) 2200 | CP 2 2201 | RET C 2202 | CALL SPCUT 2203 | LD A,(DE) 2204 | CP '0' 2205 | RET C 2206 | CP '9'+1 2207 | CCF 2208 | RET C 2209 | CALL GETNUM 2210 | LD DE,15 ;切り上げの為 2211 | ADD HL,DE 2212 | LD A,L 2213 | LD B,4 ;16で割る 2214 | RAMDISK1: 2215 | SRL H ;/2 2216 | RRA 2217 | DJNZ RAMDISK1 2218 | CP 0FFH 2219 | JR NZ,RAMDISK2 2220 | DEC A 2221 | RAMDISK2: 2222 | LD B,A 2223 | LD C,068H ;(_RAMD)RAMディスクの作成あるいは消去 2224 | CALL SYSTEM 2225 | OR A 2226 | CALL Z,SHOW_OK 2227 | RET 2228 | 2229 | C_ATTRIB: 2230 | LD A,(IS_MSX) 2231 | OR A 2232 | RET Z 2233 | LD A,(MAJOR_VER) 2234 | CP 2 2235 | RET C 2236 | LD (ATTRIB_OPT),DE 2237 | ;パス名を検索 2238 | ATTRIB1: 2239 | CALL SPCUT 2240 | LD A,(DE) 2241 | INC DE 2242 | CP ' ' 2243 | RET C 2244 | CP 'A' 2245 | JR NC,ATTRIB2 2246 | INC DE 2247 | JR ATTRIB1 2248 | ATTRIB2: 2249 | DEC DE 2250 | LD (ATTRIB_PATH),DE 2251 | XOR A 2252 | LD C,050H ;(BDOS)_ATTR ファイル属性の獲得・設定 2253 | CALL SYSTEM0 2254 | SCF 2255 | RET NZ 2256 | 2257 | LD DE,0 2258 | ATTRIB_OPT EQU $-2 2259 | ATTRIB3: 2260 | CALL SPCUT 2261 | LD A,(DE) 2262 | INC DE 2263 | CP 'A' 2264 | JR NC,ATTRIB_WRITE 2265 | CP '-' 2266 | JR Z,ATTRIB_M 2267 | CP '+' 2268 | JR Z,ATTRIB_P 2269 | CP '/' 2270 | LD A,(DE) 2271 | INC DE 2272 | JR ATTRIB3 2273 | ATTRIB_M: 2274 | LD A,(DE) 2275 | INC DE 2276 | CALL CAP 2277 | CP 'A' 2278 | JR Z,ATTRIB_M_A 2279 | CP 'S' 2280 | JR Z,ATTRIB_M_S 2281 | CP 'H' 2282 | JR Z,ATTRIB_M_H 2283 | CP 'R' 2284 | JR Z,ATTRIB_M_R 2285 | JR ATTRIB3 2286 | ATTRIB_M_A: 2287 | RES 5,L 2288 | JR ATTRIB3 2289 | ATTRIB_M_S: 2290 | RES 2,L 2291 | JR ATTRIB3 2292 | ATTRIB_M_H: 2293 | RES 1,L 2294 | JR ATTRIB3 2295 | ATTRIB_M_R: 2296 | RES 0,L 2297 | JR ATTRIB3 2298 | ATTRIB_P: 2299 | LD A,(DE) 2300 | INC DE 2301 | CALL CAP 2302 | CP 'A' 2303 | JR Z,ATTRIB_P_A 2304 | CP 'S' 2305 | JR Z,ATTRIB_P_S 2306 | CP 'H' 2307 | JR Z,ATTRIB_P_H 2308 | CP 'R' 2309 | JR Z,ATTRIB_P_R 2310 | JR ATTRIB3 2311 | ATTRIB_P_A: 2312 | SET 5,L 2313 | JR ATTRIB3 2314 | ATTRIB_P_S: 2315 | SET 2,L 2316 | JR ATTRIB3 2317 | ATTRIB_P_H: 2318 | SET 1,L 2319 | JR ATTRIB3 2320 | ATTRIB_P_R: 2321 | SET 0,L 2322 | JR ATTRIB3 2323 | ATTRIB_WRITE: 2324 | LD DE,0 2325 | ATTRIB_PATH EQU $-2 2326 | LD A,1 2327 | LD C,050H ;(BDOS)_ATTR ファイル属性の獲得・設定 2328 | CALL SYSTEM0 2329 | RET C 2330 | JP SHOW_OK 2331 | 2332 | GETNUM: 2333 | CALL SPCUT 2334 | LD HL,0 2335 | GETNUM1: 2336 | LD A,(DE) 2337 | INC DE 2338 | SUB '0' 2339 | RET C 2340 | CP 10 2341 | RET NC 2342 | LD C,L 2343 | LD B,H 2344 | ADD HL,HL ;*2 2345 | ADD HL,HL ;*4 2346 | ADD HL,BC ;*5 2347 | ADD HL,HL ;*10 2348 | LD C,A 2349 | LD B,0 2350 | ADD HL,BC 2351 | JR GETNUM1 2352 | 2353 | COMS EQU 18 2354 | COMTB: 2355 | DB "D " ;1 2356 | DW C_DIR 2357 | DB "DIR " ;2 2358 | DW C_DIR 2359 | DB "COPY " ;3 2360 | DW C_COPY 2361 | DB "CD " ;4 2362 | DW C_CD 2363 | DB "DEL " ;5 2364 | DW C_DEL 2365 | DB "PATH " ;6 2366 | DW C_PATH 2367 | DB "REN " ;7 2368 | DW C_REN 2369 | DB "TYPE " ;8 2370 | DW C_TYPE 2371 | DB "REM " ;9 2372 | DW C_REM 2373 | DB "MODE " ;10 2374 | DW C_MODE 2375 | DB "PAUSE " ;11 2376 | DW C_PAUSE 2377 | DB "SET " ;12 2378 | DW C_SET 2379 | DB "ECHO " ;13 2380 | DW C_ECHO 2381 | DB "MKDIR " ;14 2382 | DW C_MKDIR 2383 | DB "RMDIR " ;15 2384 | DW C_RMDIR 2385 | DB "FORMAT " ;16 2386 | DW C_FORMAT 2387 | DB "RAMDISK" ;17 2388 | DW C_RAMDISK 2389 | DB "ATTRIB " ;18 2390 | DW C_ATTRIB 2391 | 2392 | FREE: DB " bytes free $" 2393 | DIRMES: DB " $" 2394 | OK: DB "OK$" 2395 | COMERM: DB "Error!$" 2396 | PAUSE: DB "Strike any key when ready ",0 2397 | 2398 | S_MONTH: 2399 | DB "Jan",0 2400 | DB "Feb",0 2401 | DB "Mar",0 2402 | DB "Apr",0 2403 | DB "May",0 2404 | DB "Jun",0 2405 | DB "Jul",0 2406 | DB "Aug",0 2407 | DB "Sep",0 2408 | DB "Oct",0 2409 | DB "Nov",0 2410 | DB "Dec",0 2411 | 2412 | N_APPEND: 2413 | DB "APPEND",0 2414 | V_APPEND: 2415 | DS 64 2416 | N_PATH: 2417 | DB "PATH",0 2418 | V_PATH: 2419 | DS PATHX 2420 | N_DATE: 2421 | DB "DATE",0 2422 | V_DATE: 2423 | DB "yy-mm-dd" 2424 | DS 8 2425 | V_DATE1: 2426 | DB "mm-dd-yy" 2427 | V_DATE2: 2428 | DB "dd-mm-yy" 2429 | N_TIME: 2430 | DB "TIME",0 2431 | V_TIME: 2432 | DB "24",0 2433 | N_PROGRAM: 2434 | DB "PROGRAM",0 2435 | N_PARAMETERS: 2436 | DB "PARAMETERS",0 2437 | 2438 | F_TIME: 2439 | DB 0 2440 | PROMPT: 2441 | DB "? ",0 2442 | IS_MSX: 2443 | DB 0 2444 | MAJOR_VER: 2445 | DB 0 2446 | SEARCH_IX: 2447 | DS 64 ;DOS2用 2448 | HANDLE1: 2449 | DW 0 2450 | PATH_POS: 2451 | DW 0 2452 | PATH_DRV: 2453 | DB "A:\\" 2454 | PATH_CCP: 2455 | DS 64 ;DOS2用 2456 | PATH_PAR: 2457 | DS 64 ;DOS2用 2458 | PATH_FN1: 2459 | DS 64 ;DOS2用 2460 | PATH_FN2: 2461 | DS 64 ;DOS2用 2462 | CUR_DRV: 2463 | DB "A:\\" 2464 | CUR_PATH: 2465 | DS 64 ;DOS2用 2466 | DOS2NAME: 2467 | DS 2+8+3+1 ;DOS2用 2468 | DTA_CCP: 2469 | DS 37 2470 | DIR_CK: 2471 | DW 0 2472 | 2473 | CPBUF: 2474 | LEFTX: DW 0 2475 | DTAX: DW 0 2476 | DB 020H ;CPBUFで使う 2477 | DB 020H 2478 | DB 020H 2479 | DB 020H 2480 | DB 020H 2481 | DB 020H 2482 | DB 020H 2483 | 2484 | DECBF: 2485 | DS 5 2486 | FCB_BAT2: 2487 | DB 0 2488 | FDRV: 2489 | DB 0 2490 | FNAME: 2491 | DS 37 2492 | ZERO: 2493 | DB 0 2494 | FCB_BAT: 2495 | DW FCB_BAT2 2496 | X_PATH: 2497 | DW 0 2498 | PATH_FN2_SL: 2499 | DW 0 2500 | CSET_DATA: 2501 | DB 0 2502 | PROCESS: 2503 | DB 0 2504 | 2505 | DATA_COM: 2506 | -------------------------------------------------------------------------------- /COMMAND.COM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/COMMAND.COM -------------------------------------------------------------------------------- /COMMAND.SYM: -------------------------------------------------------------------------------- 1 | ;*** AILZ80ASM *** Z-80 Assembler, version 1.0.21.0, SYM 2 | 0026 VER_BCD 3 | 0005 SYSTEM 4 | 005C FCB1 5 | 006C FCB2 6 | 0080 DTA1 7 | 000C RDSLT 8 | 001C CALSLT 9 | 006C INITXT 10 | 006F INIT32 11 | 0078 SETTXT 12 | 007B SETT32 13 | 0147 FORMAT 14 | 0402 MAPPER 15 | F307 FCB11 16 | F37D BDOS 17 | F3AF LINL32 18 | F3AE LINL40 19 | F3B0 LINLEN 20 | F41F KBUF 21 | F55E BUF 22 | F662 DIMFLG 23 | F663 VALTYP 24 | F672 MEMSIZ 25 | F6A7 TEMP 26 | F6AF SAVTXT 27 | F6B1 SAVSTK 28 | F6B5 DOT 29 | F6B9 ONELIN 30 | F7C4 TRCFLG 31 | FAF8 EXBRSA 32 | FC9B INTFLG 33 | FCA9 CSRSW 34 | FCC1 EXPTBL 35 | FFCA EXTBIOS 36 | 0040 PATHX 37 | 8000 DATA 38 | 0103 TITLE 39 | 0116 START 40 | 013D NOTABLACUS 41 | 0165 DATECHG 42 | 016D DATEOK 43 | 018A WSTART0 44 | 01C1 WSTART 45 | 01E9 COMMAND 46 | 0216 COMMAND2 47 | 0228 COMANL 48 | 024C COMB 49 | 0250 COMB2 50 | 0255 COMST 51 | 025C COMPR1 52 | 0264 COMPR2 53 | 027E COMPR3 54 | 0282 COMPR4 55 | 0298 CEX1 56 | 029F CEX2 57 | 02AB CEX3 58 | 02B2 CEX4 59 | 02C6 SDVSW 60 | 02D1 OPEN_D2 61 | 02DD OPEN1_D2 62 | 02E7 OPEN_D2X 63 | 0305 FIB2DIRENT 64 | 0324 OPEN1 65 | 0327 OPEN 66 | 0329 OPEN3 67 | 0341 OPEN3_SWC 68 | 0347 OPEN2_D2 69 | 0359 OPEN2 70 | 035D DEFCB_D2 71 | 037B DCB4 72 | 0384 DCB5 73 | 039E DEFCB 74 | 03B3 SETDTA100 75 | 03B6 SETDTA 76 | 03C3 SETDTA1 77 | 03C8 SYSC0F 78 | 03CA SYSTEM0 79 | 03CF C_CD 80 | 03D8 CD1 81 | 03DD S27DTA_D2 82 | 03F8 S27EOF 83 | 03FB S27DTA 84 | 0405 S27 85 | 040C CEXE4 86 | 0422 C_EXE 87 | 044A COMPAT 88 | 047F COM_ENV1 89 | 048E COM_ENV2 90 | 0495 COM_ENV3 91 | 04A0 COM_ENV4 92 | 04D4 COMP1 93 | 04ED COMSIZ 94 | 04F3 C_BAT 95 | 0512 CBAT_DS 96 | 051B C_BAT1 97 | 052D C_BAT2 98 | 053C RUN_BATCH 99 | 0550 END_BATCH 100 | 055C FGETC_BAT 101 | 0560 FGETC 102 | 056C C_REM 103 | 056E C_DEL 104 | 0586 DEL1 105 | 0598 DEL2 106 | 059D CDEL_DOS1 107 | 05A1 C_REN 108 | 05B2 CDEL1 109 | 05B5 REN2 110 | 05BB REN_DOS2 111 | 05C0 REN_D2_1 112 | 05C8 REN_D2_2 113 | 05CF C_DIR 114 | 05E0 CDIR1 115 | 05EB PDSKF 116 | 05FA PDS1 117 | 05FF PDS2 118 | 0608 PDS3 119 | 060F PDSKF1 120 | 061A PWD 121 | 0622 PDSKF2 122 | 0638 MSX1 123 | 063B MSX 124 | 0641 MSXSLT1 125 | 0644 MSXSLT 126 | 0651 P_NAME 127 | 066C DIR3 128 | 0676 DIR6 129 | 0679 LTNL 130 | 0683 C_PATH 131 | 069A CPATHP 132 | 06A6 CPATH0 133 | 06AE CPATH1 134 | 06BF PUTDRV 135 | 06D1 PUTDRV1 136 | 06D8 MSG_AR 137 | 06DB PRDEC_HL 138 | 06DC PRDEC_AHL 139 | 06DF PRDEC_DEHL 140 | 06F1 DEC1 141 | 06FC DEC2 142 | 070E DEC3 143 | 0717 DECX 144 | 071B DEC4 145 | 0723 DEC5 146 | 0725 DEC7 147 | 0729 DEC6 148 | 0735 FPRNT 149 | 0741 FPR1 150 | 0746 P_N1 151 | 0751 PRTTMS 152 | 0769 PRTTMS1 153 | 0777 PRTTMS2 154 | 0783 SHOW_TIME 155 | 07A7 TIME12 156 | 07AC TIME24 157 | 07DD PRDEC_A 158 | 07E2 PRTA1 159 | 07F2 PR_DATE 160 | 081B YEAR2 161 | 0823 PR_MONTH 162 | 0841 MONTH2 163 | 0847 PR_DAY 164 | 084D PR_DATE1 165 | 085D PR_DATE_SPLITER 166 | 0868 SETFCB 167 | 0871 SETFCBA 168 | 089B SETFCB1 169 | 08A6 SETFCB2 170 | 08AC SETFCB3 171 | 08B1 C_COPY 172 | 08C8 COPYI0 173 | 08DA COPYI1 174 | 08EA RES_CUR_PATH 175 | 08ED SET_CUR_PATH 176 | 08F9 COPYSUB 177 | 0910 COPY0 178 | 091A COPY1 179 | 093B COPY8 180 | 093E COPY9 181 | 0946 COPY1A 182 | 0953 COPY2 183 | 095A COPY3 184 | 0967 PUTNAME 185 | 097A PUTN1 186 | 0997 COPY6 187 | 09B5 COPY7 188 | 09CD COPY7_MSX2 189 | 0A15 COPY_DOS2DT 190 | 0A18 COPYE 191 | 0A29 COPYE2 192 | 0A2B FCB2FNAME 193 | 0A36 FCB2FNAME1 194 | 0A42 FCB2FNAME2 195 | 0A45 FCB2FNAME3 196 | 0A4F FCB2FNAME4 197 | 0A59 FCB2FNAME5 198 | 0A5C C_TYPE 199 | 0A6C TYPE1 200 | 0A75 TYPE2 201 | 0A85 TYPE3 202 | 0A9C TYPEE 203 | 0AA9 TYPEE2 204 | 0AAF CWILD 205 | 0AB2 CWILD1 206 | 0AB6 CWILD2 207 | 0AC1 BUFSIZ 208 | 0ACC JP_HL 209 | 0ACD _PRINT 210 | 0ADE PRTHX 211 | 0AE7 PRTHX1 212 | 0AEA MSG_A 213 | 0AFD ASC 214 | 0B07 FILEC_D2 215 | 0B19 PATHCD1 216 | 0B21 PATHCD2 217 | 0B27 PATHCD3 218 | 0B2A FILEC 219 | 0B2D FILEC2 220 | 0B35 FILE 221 | 0B3C FILEX 222 | 0B5F DEVI1 223 | 0B6D NOROOT 224 | 0B6D SETDIR 225 | 0B75 SETDIR1 226 | 0B76 FILE_TDRL 227 | 0B7E FILED 228 | 0B83 FILE2 229 | 0B93 FILE3 230 | 0B9B FILE4 231 | 0BA0 FILE4L 232 | 0BB0 FILE12 233 | 0BB9 FILE9 234 | 0BBE FILE10 235 | 0BC0 FILL_MEMORY 236 | 0BC5 FILEI 237 | 0BD3 CCHKF 238 | 0BDB CCHK2 239 | 0BDE CCHK3 240 | 0BF8 SS1 241 | 0BF9 SPCUT 242 | 0BFF TOZERO 243 | 0C00 TZ1 244 | 0C08 TZ2 245 | 0C0C CAP 246 | 0C15 CAP2 247 | 0C18 CAP3 248 | 0C21 CAP4 249 | 0C27 FKANC 250 | 0C2E FKAN 251 | 0C2F FKANX 252 | 0C3E FKAN1 253 | 0C41 CHKWILDX 254 | 0C45 CHKWILD 255 | 0C49 CHKWIL1 256 | 0C51 CPNAME 257 | 0C6E CPNAME1 258 | 0C74 CPFILE 259 | 0C78 CPSTR1 260 | 0C8F CPSTR2 261 | 0C93 CPSTR3 262 | 0C95 CPFILE2 263 | 0C9D _SYS29 264 | 0CA8 D2FN1 265 | 0CB5 D2FN2 266 | 0CD4 D2FN4 267 | 0CD8 D2FN3 268 | 0CE1 S29X1 269 | 0CF7 GET_WIDTH 270 | 0D01 NOT_MSX 271 | 0D0A IS_FOLDER_FN2 272 | 0D1B IF2_1 273 | 0D25 IF2_2 274 | 0D3F IS_FOLDER_FN2_E 275 | 0D44 IS2_3 276 | 0D50 IS_FOLDER 277 | 0D67 IS_FOLDER2 278 | 0D7D C_MODE 279 | 0D8C MODE_MSX1 280 | 0DAA CALLROM 281 | 0DB1 MODE1 282 | 0DBA MODE32 283 | 0DCA C_PAUSE 284 | 0DD5 C_PAUSE1 285 | 0DE5 C_ECHO 286 | 0DEF C_MKDIR 287 | 0E00 SHOW_OK 288 | 0E0B C_RMDIR 289 | 0E19 C_SET 290 | 0E20 CSET2 291 | 0E2C CSET_SET 292 | 0E2F CSET_PARAM 293 | 0E36 INIT_VAR 294 | 0E5D CSET_LIST 295 | 0E65 CSET1 296 | 0E9D CSET_NEXT 297 | 0EA4 CSET_ERROR 298 | 0EAA CSET_END 299 | 0EAC C_FORMAT 300 | 0EB8 FORMAT1 301 | 0EC3 FORMAT2 302 | 0EDF FORMAT3 303 | 0F0F C_RAMDISK 304 | 0F2F RAMDISK1 305 | 0F39 RAMDISK2 306 | 0F44 C_ATTRIB 307 | 0F53 ATTRIB1 308 | 0F62 ATTRIB2 309 | 0F70 ATTRIB_OPT 310 | 0F72 ATTRIB3 311 | 0F89 ATTRIB_M 312 | 0FA0 ATTRIB_M_A 313 | 0FA4 ATTRIB_M_S 314 | 0FA8 ATTRIB_M_H 315 | 0FAC ATTRIB_M_R 316 | 0FB0 ATTRIB_P 317 | 0FC7 ATTRIB_P_A 318 | 0FCB ATTRIB_P_S 319 | 0FCF ATTRIB_P_H 320 | 0FD3 ATTRIB_P_R 321 | 0FD7 ATTRIB_WRITE 322 | 0FD8 ATTRIB_PATH 323 | 0FE5 GETNUM 324 | 0FEB GETNUM1 325 | 0012 COMS 326 | 0FFF COMTB 327 | 10A1 FREE 328 | 10AF DIRMES 329 | 10B8 OK 330 | 10BB COMERM 331 | 10C2 PAUSE 332 | 10DD S_MONTH 333 | 110D N_APPEND 334 | 1114 V_APPEND 335 | 1154 N_PATH 336 | 1159 V_PATH 337 | 1199 N_DATE 338 | 119E V_DATE 339 | 11AE V_DATE1 340 | 11B6 V_DATE2 341 | 11BE N_TIME 342 | 11C3 V_TIME 343 | 11C6 N_PROGRAM 344 | 11CE N_PARAMETERS 345 | 11D9 F_TIME 346 | 11DA PROMPT 347 | 11DD IS_MSX 348 | 11DE MAJOR_VER 349 | 11DF SEARCH_IX 350 | 121F HANDLE1 351 | 1221 PATH_POS 352 | 1223 PATH_DRV 353 | 1226 PATH_CCP 354 | 1266 PATH_PAR 355 | 12A6 PATH_FN1 356 | 12E6 PATH_FN2 357 | 1326 CUR_DRV 358 | 1329 CUR_PATH 359 | 1369 DOS2NAME 360 | 1377 DTA_CCP 361 | 139C DIR_CK 362 | 139E CPBUF 363 | 139E LEFTX 364 | 13A0 DTAX 365 | 13A9 DECBF 366 | 13AE FCB_BAT2 367 | 13AF FDRV 368 | 13B0 FNAME 369 | 13D5 ZERO 370 | 13D6 FCB_BAT 371 | 13D8 X_PATH 372 | 13DA PATH_FN2_SL 373 | 13DC CSET_DATA 374 | 13DD PROCESS 375 | 13DE DATA_COM 376 | 377 | -------------------------------------------------------------------------------- /COMMAND.TXT: -------------------------------------------------------------------------------- 1 | ・似非COMMAND 2 | ・内部コマンド 3 | 4 | ●CD カレント・ディレクトリの表示・変更 5 | ●COPY ファイルのコピー (ワイルドカード可) 6 | ●DEL ファイルの削除 (ワイルドカード可) 7 | ●DIR ファイル名一覧の表示 (ワイルドカード可) 8 | ●ECHO 文字列を表示 9 | ●FORMAT ディスクのフォーマット 10 | ●MODE 画面の桁数を変更 11 | ●MKDIR サブディレクトリの作成(DOS2モード限定) 12 | ●PATH 外部コマンド検索の為のサーチパスの設定(DOS2モード限定) 13 | ●RAMDISK RAMディスクの作成あるいは消去(DOS2モード限定) 14 | ●REN ファイル名/ディレクトリ名の変更 15 | ●REM コメント 16 | ●RMDIR サブディレクトリの削除(DOS2モード限定) 17 | ●PAUSE プロンプトを出してキーが押されるのを待つ 18 | ●SET 環境変数を表示・設定 (DOS2モード限定) 19 | ●TYPE ファイルの内容の表示 (ワイルドカード可) 20 | 21 | - - - - - - - - - - 22 | 23 | ●カレント・ドライブの変更 24 | 25 | ドライブ名: 26 | 27 | ドライブ名で指定したドライブにカレント・ドライブを変更します。 28 | 29 | - - - - - - - - - - 30 | 31 | ●カレントディレクトリの変更 32 | 33 | CD パス名 34 | 35 | カレント・ディレクトリを変更します。 36 | 37 | - - - - - - - - - - 38 | 39 | ●ファイルのコピー (ワイルドカード可) 40 | 41 | COPY [ドライブ名:][ファイル名1] [ドライブ名:][ファイル名2] 42 | 43 | ファイル名1で指定したファイルをドライブ名で指定したドライブ及びファイル名2 44 | で指定されたファイルにコピーします。ファイル名1を省略するとワイルドカードが指 45 | 定されます。ファイル名2を省略するとファイル名1で指定したファイル名になります。 46 | コピー元とコピー先が同一の時はスキップします。 47 | 48 | - - - - - - - - - - 49 | 50 | ●ファイルの削除(ワイルドカード可) 51 | 52 | DEL ファイル名 53 | 54 | ファイル名で指定したファイルを削除します。 55 | 56 | - - - - - - - - - - 57 | 58 | ●ファイル名一覧の表示(ワイルドカード可) 59 | 60 | 61 | DIR [ドライブ名:][ファイル名] 62 | 63 | D [ドライブ名:][ファイル名]も可 64 | 65 | [ドライブ名:][ファイル名]で指定したディレクトリを表示します。 66 | 省略された場合、カレント・ドライブのディレクトリを表示します。 67 | 68 | 例:ディレクトリ「LD」のファイル名を表示 69 | 70 | DIR LD 71 | 72 | - - - - - - - - - - 73 | 74 | ●文字列を表示 75 | 76 | ECHO 文字列 77 | 78 | - - - - - - - - - - 79 | 80 | ●ディスクのフォーマット 81 | 82 | FORMAT [ドライブ名:] 83 | 84 | ドライブ名を指定するとDOS2モードでフォーマットを行います。(DOS2モードのみ) 85 | ドライブ名を指定しない場合はDOS1モードでフォーマットを行います。 86 | 87 | - - - - - - - - - - 88 | 89 | ●画面の桁数を変更 90 | 91 | MODE [桁数] 92 | 93 | [桁数]で指定した桁数にします。省略した場合は現在の桁数が表示されます。 94 | 95 | - - - - - - - - - - 96 | 97 | ●サブディレクトリの作成(DOS2モード限定) 98 | 99 | MKDIR ディレクトリ名 100 | 101 | - - - - - - - - - - 102 | 103 | ●外部コマンド検索の為のサーチパスの設定(DOS2モード限定) 104 | 105 | PATH [;][ドライブ名:][パス名][;[ドライブ名:][パス名]]・・・・・ 106 | 107 | ドライブ名、パス名で外部コマンド検索の為のサーチパスを設定します。 108 | ドライブ名、パス名を省略した場合、現在設定されているドライブを表示します。 109 | 110 | 例:サーチパスをA:\LD,B:\LDの順と設定する。 111 | 112 | PATH A:\LD;B:\LD 113 | 114 | 例:設定されているサーチパスを解除 115 | 116 | PATH ; 117 | 118 | - - - - - - - - - - 119 | 120 | ●RAMディスクの作成あるいは消去(DOS2モード限定) 121 | 122 | RAMDISK 容量 123 | 124 | 容量KバイトのRAMディスクを確保します。容量は16KB単位に切り上げされます。 125 | 容量が0の場合はRAMディスクを削除します。 126 | H:ドライブがRAMディスクになります。 127 | 128 | - - - - - - - - - - 129 | 130 | ●ファイル名/ディレクトリ名の変更 131 | 132 | REN ファイル名1 ファイル名2 133 | 134 | ファイル名1で指定したファイルをファイル名2のファイル名に変更します。 135 | 136 | - - - - - - - - - - 137 | 138 | ●コメント 139 | 140 | REM コメント 141 | 142 | - - - - - - - - - - 143 | 144 | ●サブディレクトリの削除(DOS2モード限定) 145 | 146 | RMDIR ディレクトリ名 147 | 148 | - - - - - - - - - - 149 | 150 | ●プロンプトを出してキーが押されるのを待つ 151 | 152 | PAUSE [コメント] 153 | 154 | - - - - - - - - - - 155 | 156 | ●環境変数を表示・設定(DOS2モード限定) 157 | 158 | SET [変数名=内容] 159 | 160 | [変数名=内容]を省略すると環境変数一覧を表示します。 161 | 162 | - - - - - - - - - - 163 | 164 | ●ファイルの内容の表示(ワイルドカード可) 165 | 166 | TYPE ファイル名 167 | 168 | ファイル名で指定したファイルの内容を表示します。 169 | 170 | -------------------------------------------------------------------------------- /DEF.ASM: -------------------------------------------------------------------------------- 1 | ; 2 | ; 似非DOS 3 | ; 4 | VER_BCD EQU 00026H 5 | 6 | SYSTEM EQU 00005H 7 | FCB1 EQU 0005CH 8 | FCB2 EQU 0006CH 9 | DTA1 EQU 00080H 10 | 11 | RDSLT EQU 0000CH 12 | CALSLT EQU 0001CH 13 | INITXT EQU 0006CH 14 | INIT32 EQU 0006FH 15 | SETTXT EQU 00078H 16 | SETT32 EQU 0007BH 17 | FORMAT EQU 00147H 18 | 19 | MAPPER EQU 00402H 20 | 21 | FCB11 EQU 0F307H 22 | BDOS EQU 0F37DH 23 | LINL32 EQU 0F3AFH 24 | LINL40 EQU 0F3AEH 25 | LINLEN EQU 0F3B0H 26 | 27 | KBUF EQU 0F41FH; 318 28 | BUF EQU 0F55EH; 258 29 | 30 | DIMFLG EQU 0F662H 31 | VALTYP EQU 0F663H 32 | MEMSIZ EQU 0F672H 33 | TEMP EQU 0F6A7H 34 | SAVTXT EQU 0F6AFH 35 | SAVSTK EQU 0F6B1H 36 | DOT EQU 0F6B5H 37 | ONELIN EQU 0F6B9H 38 | 39 | TRCFLG EQU 0F7C4H 40 | 41 | EXBRSA EQU 0FAF8H 42 | 43 | INTFLG EQU 0FC9BH 44 | CSRSW EQU 0FCA9H 45 | EXPTBL EQU 0FCC1H 46 | EXTBIOS EQU 0FFCAH 47 | -------------------------------------------------------------------------------- /DOS.ASM: -------------------------------------------------------------------------------- 1 | ; 似非DOS 2 | 3 | INCLUDE "DEF.ASM" 4 | 5 | DE_MEM_SIZE EQU DIMFLG 6 | SAVE_A EQU VALTYP 7 | EXTSP EQU TEMP 8 | DEFAB EQU SAVTXT 9 | _DTA EQU DOT 10 | 11 | ALT_MEM EQU KBUF 12 | ALT_MEM2 EQU ALT_MEM+64 13 | ALT_MEM3 EQU ALT_MEM2+64 14 | SAVE_C EQU ALT_MEM3+64 15 | IS_SAVE_IX_VAUE EQU SAVE_C+1 16 | SAVE_DE EQU IS_SAVE_IX_VAUE+1 17 | SAVE_HL EQU SAVE_DE+2 18 | SAVE_IX EQU SAVE_HL+2 19 | SAVE_IY EQU SAVE_IX+2 20 | 21 | ORG 00100H 22 | CALL 0F36BH ;ページ1をメインRAMに切り替える 23 | LD A,0C3H ;JP 24 | LD (0),A ;WBOOT 25 | LD (SYSTEM),A 26 | XOR A 27 | LD (TRCFLG),A 28 | 29 | LD HL,01234H ;NEXTOR チェックの為 30 | LD DE,0ABCDH 31 | LD IX,0 32 | LD BC,05A6FH ;_DOSVER MSX-DOS のバージョン番号の獲得 33 | CALL BDOS 34 | 35 | LD A,IXH 36 | LD (OS_EXT),A 37 | LD A,B 38 | CP 2 39 | SBC A,A 40 | LD (ISDOS1),A 41 | JR C,DOS1R 42 | LD HL,N_SHELL ;DOS2の場合はCOMMAND.COMの読み込みに 43 | LD DE,AT_COMMAND1+1 ;ファイルハンドルを用いるものに差し替え 44 | LD BC,6 ;階層ディレクトリに対応の為 45 | LDIR 46 | LD HL,AT_DOS2RELOAD 47 | LD DE,AT_DOS1RELOAD 48 | LD BC,DOS2RELOAD_-DOS2RELOAD 49 | LDIR 50 | JR DOS2R 51 | DOS1R: 52 | LD HL,08A91H ;Tablacus Disk ROM Lite判別 53 | XOR A 54 | SBC HL,DE 55 | JR NZ,DOS1R1 56 | DEC A 57 | DOS1R1: 58 | LD (OS_EXT),A 59 | DOS2R: 60 | LD HL,(MEMSIZ) 61 | LD L,0 62 | LD (EXTSP),HL 63 | LD L,3 64 | DEC H 65 | LD (1),HL ;WBOOT 66 | DEC H 67 | DEC H 68 | DEC H 69 | LD L,0 70 | LD (BASE),HL 71 | LD L,4 72 | LD SP,HL 73 | EX DE,HL 74 | LD HL,REAL 75 | LD BC,MAIN_END-MAIN 76 | LDIR 77 | ;リロケータブル 78 | LD HL,(BASE) 79 | LD A,H 80 | LD BC,BDOS0_SWC 81 | ADD HL,BC 82 | ADD A,(HL) 83 | LD (HL),A 84 | 85 | LD HL,(BASE) 86 | LD A,H 87 | LD BC,SYS09_SWC 88 | ADD HL,BC 89 | ADD A,(HL) 90 | LD (HL),A 91 | 92 | LD HL,(BASE) 93 | LD A,H 94 | LD BC,BOOT+2 95 | ADD HL,BC 96 | ADD A,(HL) 97 | LD (HL),A 98 | 99 | LD HL,(BASE) 100 | LD A,H 101 | LD BC,WBOOT+2 102 | ADD HL,BC 103 | ADD A,(HL) 104 | LD (HL),A 105 | 106 | LD HL,(BASE) 107 | LD A,H 108 | LD BC,RDABS_SWC 109 | ADD HL,BC 110 | ADD A,(HL) 111 | LD (HL),A 112 | 113 | LD HL,(BASE) 114 | LD A,H 115 | LD BC,WRABS_SWC 116 | ADD HL,BC 117 | ADD A,(HL) 118 | LD (HL),A 119 | 120 | LD HL,(BASE) 121 | LD A,H 122 | LD BC,BDOS_EXEC_SWC1 123 | ADD HL,BC 124 | ADD A,(HL) 125 | LD (HL),A 126 | 127 | LD HL,(BASE) 128 | LD A,H 129 | LD BC,BDOS_EXEC_SWC2 130 | ADD HL,BC 131 | ADD A,(HL) 132 | LD (HL),A 133 | 134 | LD HL,(BASE) 135 | LD A,H 136 | LD BC,BUF512_SWC1 137 | ADD HL,BC 138 | ADD A,(HL) 139 | LD (HL),A 140 | 141 | LD HL,(BASE) 142 | LD A,H 143 | LD BC,BUF512_SWC2 144 | ADD HL,BC 145 | ADD A,(HL) 146 | LD (HL),A 147 | 148 | LD HL,(BASE) 149 | LD A,H 150 | LD BC,BUF512_SWC3 151 | ADD HL,BC 152 | ADD A,(HL) 153 | LD (HL),A 154 | 155 | LD HL,(BASE) 156 | LD A,H 157 | LD BC,BUF512_SWC4 158 | ADD HL,BC 159 | ADD A,(HL) 160 | LD (HL),A 161 | 162 | LD HL,(BASE) 163 | LD A,H 164 | LD BC,SHOW_ERROR+2 165 | ADD HL,BC 166 | ADD A,(HL) 167 | LD (HL),A 168 | 169 | LD HL,(BASE) 170 | LD A,H 171 | LD BC,CONST_+2 172 | ADD HL,BC 173 | ADD A,(HL) 174 | LD (HL),A 175 | 176 | LD HL,(BASE) 177 | LD A,H 178 | LD BC,CONIN+2 179 | ADD HL,BC 180 | ADD A,(HL) 181 | LD (HL),A 182 | 183 | LD HL,(BASE) 184 | LD A,H 185 | LD BC,CONOUT+2 186 | ADD HL,BC 187 | ADD A,(HL) 188 | LD (HL),A 189 | 190 | LD HL,(BASE) 191 | LD A,H 192 | LD BC,FCBPAT+2 193 | ADD HL,BC 194 | ADD A,(HL) 195 | LD (HL),A 196 | 197 | LD HL,(BASE) 198 | LD DE,BDOS1 199 | ADD HL,DE 200 | EX DE,HL 201 | 202 | LD HL,(BASE) 203 | LD L,BDOS0 204 | DEC H 205 | DEC H 206 | LD (SYSTEM+1),HL 207 | LD (HL),0C3H ;JP 208 | INC HL 209 | LD (HL),E 210 | INC HL 211 | LD (HL),D 212 | 213 | LD C,19H ;(BDOS)_CURDRV カレントドライブ番号の獲得 214 | CALL BDOS 215 | INC A 216 | 217 | LD HL,(BASE) 218 | LD BC,FCBCMD 219 | ADD HL,BC 220 | LD (HL),A 221 | ADD A,040H 222 | LD (V_SHELL),A 223 | 224 | LD A,40 225 | LD (LINL40),A 226 | LD IY,(EXPTBL-1) ;メインROMスロット 227 | LD IX,INITXT 228 | CALL CALSLT 229 | LD IY,(EXPTBL-1) ;メインROMスロット 230 | LD IX,SETTXT 231 | CALL CALSLT 232 | 233 | LD DE,TITLE 234 | LD C,9 235 | CALL BDOS 236 | LD A,(ISDOS1) 237 | ADD A,A 238 | JR C,DOS1 239 | LD E,'2' 240 | LD C,2 241 | CALL BDOS 242 | LD A,(OS_EXT) 243 | CP 1 244 | JR NZ,NONEXTOR 245 | LD DE,TITLE_NEXTOR 246 | LD C,9 247 | CALL BDOS 248 | NONEXTOR: 249 | LD HL,N_SHELL 250 | LD DE,V_SHELL 251 | LD C,06CH ;_SENV 環境変数のセット 252 | CALL BDOS 253 | 254 | LD A,(EXPTBL) ;メインROMスロット 255 | LD HL,002BH ;キャラクターセット・日時フォーマット・ビデオ信号の種別 256 | CALL RDSLT 257 | RRCA 258 | RRCA 259 | RRCA 260 | RRCA 261 | AND 3 262 | DEC A 263 | LD DE,V_DATE1 264 | JR Z,DATEOK 265 | DEC A 266 | LD DE,V_DATE2 267 | JR Z,DATEOK 268 | LD DE,V_DATE0 269 | DATEOK: 270 | LD HL,N_DATE 271 | LD C,06CH ;_SENV 環境変数のセット 272 | CALL BDOS 273 | 274 | LD HL,N_TIME 275 | LD DE,V_TIME 276 | LD C,06CH ;_SENV 環境変数のセット 277 | CALL BDOS 278 | JR DOS2 279 | DOS1: 280 | LD A,(OS_EXT) 281 | CP 0FFH 282 | JR NZ,NOTABLACUS 283 | LD DE,TITLE_TABLACUS 284 | LD C,9 285 | CALL BDOS 286 | NOTABLACUS: 287 | DOS2: 288 | LD DE,TITLE2 289 | LD C,9 290 | CALL BDOS 291 | 292 | LD HL,VER_BCD 293 | LD A,H 294 | CALL PRTHX1 295 | LD A,'.' 296 | CALL MSG_A 297 | LD A,L 298 | CALL PRTHX 299 | 300 | LD DE,TITLE3 301 | LD C,9 302 | CALL BDOS 303 | 304 | LD BC,9 305 | LD HL,AUTOEXEC 306 | LD DE,DTA1+1 307 | LDIR 308 | LD A,9 309 | LD HL,(1) 310 | LD L,CBOOT & $FF 311 | JP_HL: 312 | JP (HL) 313 | 314 | PRTHX: 315 | PUSH AF 316 | RLCA 317 | RLCA 318 | RLCA 319 | RLCA 320 | CALL PRTHX1 321 | POP AF 322 | PRTHX1: 323 | CALL ASC 324 | MSG_A: 325 | PUSH AF 326 | PUSH BC 327 | PUSH DE 328 | PUSH HL 329 | PUSH IX 330 | LD E,A 331 | LD C,2 332 | CALL SYSTEM 333 | POP IX 334 | POP HL 335 | POP DE 336 | POP BC 337 | POP AF 338 | RET 339 | 340 | ASC: 341 | AND 00FH 342 | OR '0' 343 | CP '9' 344 | RET C 345 | ADD A,7 346 | RET 347 | 348 | TITLE: 349 | DB "pseudo DOS$" 350 | TITLE_NEXTOR: 351 | DB "(NEXTOR)$" 352 | TITLE_TABLACUS: 353 | DB "(Tablacus)$" 354 | TITLE2: 355 | DB " for MSX v$" 356 | TITLE3: 357 | DB " Gaku$" 358 | AUTOEXEC: 359 | DB "AUTOEXEC",0 360 | N_SHELL: 361 | DB "SHELL",0 362 | V_SHELL: 363 | DB "A:\\COMMAND.COM",0 364 | N_DATE: 365 | DB "DATE",0 366 | V_DATE0: 367 | DB "yy-mm-dd",0 368 | V_DATE1: 369 | DB "mm-dd-yy",0 370 | V_DATE2: 371 | DB "dd-mm-yy",0 372 | N_TIME: 373 | DB "TIME",0 374 | V_TIME: 375 | DB "24",0 376 | Z_TIME: 377 | DS 64 378 | ISDOS1: 379 | DB 0 380 | OS_EXT: 381 | DB 0 382 | BASE: 383 | DW 0 384 | REAL: 385 | ORG 4,REAL-0100H 386 | MAIN: 387 | DW 0 388 | BDOS0: 389 | JP BDOS1 390 | BDOS0_SWC EQU $-1 391 | TERM: 392 | LD A,B 393 | LD (TRCFLG),A 394 | LD HL,0 395 | PUSH HL 396 | LD HL,(DEFAB) 397 | JP (HL) 398 | BDOS1: 399 | INC C 400 | DEC C 401 | ;BDOS0+013Hを0にするとバッチ停止されるため0が書き込みされる場合がある 402 | JP Z,0 ;だから、ここのアドレスをBDOS0+011HもしくはBDOS0+012Hにする 403 | LD (SAVSTK),SP 404 | LD (SAVE_A),A 405 | LD (SAVE_IX),IX 406 | LD (SAVE_IY),IY 407 | LD A,C 408 | CP 062H ;_TERM エラーコードを返して終了 409 | JR Z,TERM 410 | LD A,(SAVSTK+1) 411 | ADD A,A 412 | JR C,BDOS_SPOK 413 | LD SP,(EXTSP) 414 | BDOS_SPOK: 415 | LD A,C 416 | CP 9 ;_STROUT 文字列出力 417 | JP Z,_SYS09 418 | SYS09_SWC EQU $-1 419 | CP 063H ;_DEFAB アボート終了ルーチンの定義 420 | JR NZ,BDOS2 421 | LD (DEFAB),DE 422 | BDOS2: 423 | CP 01AH ;_SETDTA DTAの設定 424 | JR NZ,BDOS2_ 425 | LD (_DTA),DE 426 | BDOS2_: 427 | LD (SAVE_C),A 428 | CP 00FH ;_FOPEN ファイルオープン 429 | JR C,SAVEFCB0 430 | CP 012H ;_SNEXT ファイル検索 続き 431 | JR NZ,NOBD12 432 | LD DE,(FCB11) 433 | NOBD12: 434 | CP 018H ;_LOGIN ログインベクトルの獲得 435 | JR C,SAVEFCB36 436 | CP 021H ;_RDRND ランダム読み出し 437 | JR C,SAVEFCB0 438 | CP 028H+1 ;_WRZER ゼロ書き込みを伴うランダム書き込み+1 439 | JR C,SAVEFCB36 440 | CP 031H ;_DPARM ディスクパラメータの獲得 441 | JR Z,SAVEFCB36 442 | CP 040H ;_FFIRST 最初のエントリ検索 443 | JR Z,SAVE_PATH 444 | CP 042H ;_FNEW 新しいエントリの検索 445 | JR Z,SAVE_PATH 446 | CP 043H ;_OPEN ファイルハンドルのオープン 447 | JR Z,SAVE_PATH 448 | CP 044H ;_CREATE ファイルハンドルの作成 449 | JR Z,SAVE_PATH 450 | CP 04CH ;_HTEST ファイルハンドルの検査 451 | JR Z,SAVE_PATH 452 | CP 04DH ;_DELETE ファイル、サブディレクトリの削除 453 | JR C,SAVEFCB0 454 | CP 051H+1 ;_FTIME ファイルの日付および時刻の獲得・設定 455 | JR C,SAVE_PATH 456 | CP 059H ;_GETCD カレントディレクトリの獲得 457 | JR C,SAVEFCB0 458 | CP 05CH+1 ;_PFILE ファイル名の解析+1 459 | JR C,SAVE_PATH 460 | CP 05EH ;_WPATH パス文字列全体の獲得 461 | JR Z,SAVE_PATH 462 | CP 066H ;_EXPLAIN エラーコードの説明 463 | JR Z,SAVE_PATH 464 | JR SAVEFCB0 465 | SAVEFCB36: 466 | SAVE_PATH: 467 | LD A,D 468 | CP 03FH ;ページ1にかぶる? 469 | JR C,SAVEFCB0 470 | CP 080H 471 | JR NC,SAVEFCB0 472 | LD A,36 473 | BIT 6,C ;DOS2のファンクションコール? 474 | JR Z,SAVEFCB1 475 | LD A,64 ;DOS2CALLは64バイト設定する 476 | JR SAVEFCB1 477 | SAVEFCB0: 478 | XOR A 479 | SAVEFCB1: 480 | LD (DE_MEM_SIZE),A 481 | OR A 482 | JR Z,BDOS3 483 | PUSH BC 484 | PUSH HL 485 | LD (SAVE_DE),DE 486 | LD C,A 487 | LD B,0 488 | LD HL,ALT_MEM 489 | EX DE,HL 490 | PUSH DE 491 | LDIR 492 | XOR A 493 | LD (DE),A 494 | POP DE 495 | POP HL 496 | POP BC 497 | BDOS3: 498 | XOR A 499 | LD (IS_SAVE_IX_VAUE),A 500 | LD A,C 501 | CP 040H ;最初のエントリ検索 502 | JR C,BDOS3IX ;次のエントリ検索 503 | CP 042H+1 ;新しいエントリの検索 504 | JR NC,BDOS3IX 505 | LD A,IXH 506 | CP 03FH ;ページ1にかぶる? 507 | JR C,BDOS3IX 508 | CP 080H ; 509 | JR NC,BDOS3IX 510 | LD (IS_SAVE_IX_VAUE),A 511 | PUSH BC 512 | PUSH DE 513 | PUSH HL 514 | PUSH IX 515 | POP HL 516 | LD DE,ALT_MEM2 517 | LD BC,64 518 | PUSH DE 519 | LDIR 520 | POP IX 521 | POP HL 522 | POP DE 523 | POP BC 524 | BDOS3IX: 525 | XOR A 526 | LD (SAVE_HL+1),A 527 | LD A,C 528 | CP 4EH ;_RENAME ファイルあるいはサブディレクトリ名の変更 529 | JR Z,SAVE_HL1 530 | CP 4FH ;_MOVE ファイルあるいはサブディレクトリの移動 531 | JR Z,SAVE_HL1 532 | CP 53H ;_HRENAME ファイルハンドルの名前の変更 533 | JR Z,SAVE_HL1 534 | CP 54H ;_HMOVE ファイルハンドルの移動 535 | JR Z,SAVE_HL1 536 | CP 05CH ;_PFILE ファイル名の解析 537 | JR Z,SAVE_HL1 538 | CP 040H ;_FFIRST 最初のエントリ検索 539 | JR Z,FIBCHECK 540 | CP 042H ;_FNEW 新しいエントリ検索 541 | JR NZ,BDOS3HL 542 | FIBCHECK: 543 | LD A,(DE) 544 | INC A ;DEがFIBならば0FFH 545 | JR NZ,BDOS3HL 546 | SAVE_HL1: 547 | LD A,H 548 | CP 03FH ;ページ1にかぶる? 549 | JR C,BDOS3HL 550 | CP 080H ; 551 | JR NC,BDOS3HL 552 | LD (SAVE_HL),HL 553 | PUSH BC 554 | PUSH DE 555 | LD BC,64 556 | LD DE,ALT_MEM3 557 | LDIR 558 | POP DE 559 | POP BC 560 | LD HL,ALT_MEM3 561 | BDOS3HL: 562 | LD A,C 563 | CP 02FH 564 | JP Z,RDABS 565 | RDABS_SWC EQU $-1 566 | CP 030H 567 | JP Z,WRABS 568 | WRABS_SWC EQU $-1 569 | BDOS_EXEC: 570 | LD A,(SAVE_A) 571 | CALL BDOS 572 | 573 | PUSH AF 574 | LD A,(SAVE_C) 575 | CP 01BH ;アロケーション情報の獲得 576 | JR Z,BDOS4IX 577 | CP 06FH ;MSX-DOSのバージョン番号の獲得 578 | JR Z,BDOS4IX 579 | LD IX,(SAVE_IX) 580 | LD IY,(SAVE_IY) 581 | LD A,(IS_SAVE_IX_VAUE) ;最初のエントリ検索 + 次のエントリ検索 582 | OR A 583 | JR Z,BDOS4IX 584 | PUSH BC 585 | PUSH DE 586 | PUSH HL 587 | PUSH IX 588 | POP DE 589 | LD HL,ALT_MEM2 590 | LD BC,64 591 | LDIR 592 | POP HL 593 | POP DE 594 | POP BC 595 | BDOS4IX: 596 | LD A,(DE_MEM_SIZE) 597 | OR A 598 | JR Z,BDOS4 599 | PUSH BC 600 | PUSH DE 601 | PUSH HL 602 | LD C,A 603 | LD B,0 604 | LD HL,ALT_MEM 605 | LD DE,(SAVE_DE) 606 | LDIR 607 | POP HL 608 | POP DE 609 | POP BC 610 | BDOS4: 611 | LD A,(SAVE_HL+1) 612 | OR A 613 | JR Z,BDOS5 614 | PUSH BC 615 | PUSH DE 616 | PUSH HL 617 | LD BC,11 618 | LD HL,ALT_MEM3 619 | LD DE,(SAVE_HL) 620 | LDIR 621 | POP HL 622 | POP DE 623 | POP BC 624 | BDOS5: 625 | LD A,(SAVE_C) 626 | CP 06FH ;_DOSVER MSX-DOSのバージョン番号の獲得 627 | JR NZ,BDOS7 628 | INC B 629 | DEC B 630 | JR Z,S6F_1 631 | LD E,C ;DOS2の場合 632 | LD D,B ;MSXDOS2.SYSのバージョンをカーネルに合わす 633 | S6F_1: 634 | DEC IXH ;NEXTOR判別 635 | JR Z,NEXTOR 636 | LD IX,0ECEDH ;似非DOS判別用(INC IXがあるのでIXが0EDEDHになる) 637 | LD HL,VER_BCD ;NEXTORじゃない場合はHLに似非DOSのバージョンが返る 638 | NEXTOR: 639 | INC IXH 640 | BDOS7: 641 | CP 05BH ;_PARSE パス名の解析 642 | JR Z,BDOS8 643 | CP 05EH ;_WPATH パス文字列全体の獲得 644 | JR NZ,BDOS6 645 | BDOS8: 646 | LD A,(DE_MEM_SIZE) 647 | JR Z,BDOS6 648 | PUSH BC 649 | LD BC,ALT_MEM 650 | SBC HL,BC ;CF=0のハズ 651 | LD BC,(SAVE_DE) 652 | ADD HL,BC 653 | EX DE,HL 654 | LD BC,ALT_MEM 655 | AND A ;念のためにCF=0にする 656 | SBC HL,BC 657 | LD BC,(SAVE_DE) 658 | ADD HL,BC 659 | EX DE,HL 660 | POP BC 661 | BDOS6: 662 | POP AF 663 | LD SP,(SAVSTK) 664 | RET 665 | 666 | CONST1: 667 | LD C,0BH 668 | JP SYSTEM 669 | CONIN1: 670 | LD C,7 671 | JP SYSTEM 672 | CONOUT1: 673 | LD E,C 674 | LD C,2 675 | JP SYSTEM 676 | 677 | _SYS09: ;_STROUT 文字列出力 678 | LD A,(DE) 679 | INC DE 680 | CP '$' 681 | JR Z,S09X1 682 | PUSH DE 683 | LD C,2 684 | LD E,A 685 | CALL BDOS 686 | POP DE 687 | JR _SYS09 688 | 689 | S09X1: 690 | LD SP,(SAVSTK) 691 | LD IX,(SAVE_IX) 692 | LD IY,(SAVE_IY) 693 | RET 694 | 695 | RDABS: 696 | LD A,(_DTA+1) 697 | ADD A,A 698 | JP C,BDOS_EXEC 699 | BDOS_EXEC_SWC1 EQU $-1 700 | 701 | PUSH DE 702 | PUSH HL 703 | LD DE,TERM-0200H 704 | BUF512_SWC1 EQU $-1 705 | LD C,01AH ;_SETDTA 706 | CALL BDOS 707 | POP HL 708 | POP DE 709 | 710 | LD BC,(_DTA) 711 | RDABS1: 712 | PUSH DE 713 | PUSH HL 714 | PUSH BC 715 | LD H,1 716 | LD C,02FH ;_RDABS 717 | CALL BDOS 718 | POP HL ;<=転送先 719 | CP 0FFH 720 | JR Z,RDABS_ERR 721 | EX DE,HL 722 | LD HL,TERM-0200H 723 | BUF512_SWC2 EQU $-1 724 | LD BC,512 725 | LDIR 726 | LD C,E 727 | LD B,D 728 | POP HL 729 | POP DE 730 | INC DE 731 | DEC H 732 | JR NZ,RDABS1 733 | WRABS_OK: 734 | XOR A 735 | WRABS_ERR: 736 | PUSH DE 737 | PUSH HL 738 | RDABS_ERR: 739 | PUSH AF 740 | LD DE,(_DTA) 741 | LD C,01AH ;_SETDTA 742 | CALL BDOS 743 | POP AF 744 | POP HL 745 | POP DE 746 | LD SP,(SAVSTK) 747 | RET 748 | 749 | WRABS: 750 | LD A,(_DTA+1) 751 | ADD A,A 752 | JP C,BDOS_EXEC 753 | BDOS_EXEC_SWC2 EQU $-1 754 | PUSH DE 755 | PUSH HL 756 | LD DE,TERM-0200H 757 | BUF512_SWC3 EQU $-1 758 | LD C,01AH ;_SETDTA 759 | CALL BDOS 760 | POP HL 761 | POP DE 762 | 763 | LD BC,(_DTA) 764 | WRABS1: 765 | PUSH DE 766 | PUSH HL 767 | LD L,C 768 | LD H,B 769 | LD DE,TERM-0200H 770 | BUF512_SWC4 EQU $-1 771 | LD BC,512 772 | LDIR 773 | EX (SP),HL 774 | POP DE 775 | 776 | PUSH DE 777 | PUSH HL 778 | LD H,1 779 | LD C,030H ;_WRABS 780 | CALL BDOS 781 | POP HL 782 | POP DE 783 | POP BC 784 | CP 0FFH 785 | JR Z,WRABS_ERR 786 | INC DE 787 | DEC H 788 | JR NZ,WRABS1 789 | JR WRABS_OK 790 | 791 | FCBCMD: 792 | ORG $$+0100H ;$DEPHASE 793 | AT_COMMAND1: 794 | ORG FCBCMD,AT_COMMAND1-0100H 795 | DB 0,"COMMAND COM",0,0,0,0 796 | 797 | AT: 798 | DS 0300H-37-AT 799 | FCB_BAT: 800 | DS 37 ;バッチファイル用のFCB 801 | ; 下位1バイト0になるように 802 | BOOT: 803 | JP WBOOT1 804 | WBOOT: 805 | JP WBOOT1 806 | CONST_: ;(BDOS)コンソール直接入力 807 | JP CONST1 808 | CONIN: 809 | JP CONIN1 810 | CONOUT: 811 | JP CONOUT1 812 | 813 | WBOOT1: 814 | XOR A 815 | CBOOT: 816 | LD (SAVE_A),A 817 | LD SP,(SYSTEM+1) 818 | RELOAD: 819 | FCBPAT: LD HL,FCBCMD 820 | DOS1RELOAD: 821 | AT_DOS1RELOAD EQU $$+0100H 822 | LD DE,FCB1 823 | LD BC,16 824 | LDIR 825 | 826 | LD DE,FCB1 827 | LD C,00FH ;(BDOS)_FOPEN ファイルオープン 828 | CALL BDOS 829 | OR A 830 | JR NZ,SHOW_ERROR 831 | LD HL,0 832 | LD (FCB1+33),HL 833 | LD (FCB1+35),HL 834 | INC L 835 | LD (FCB1+14),HL 836 | 837 | LD DE,00100H 838 | LD C,01AH ;(BDOS)DTAの設定 839 | CALL BDOS 840 | 841 | LD DE,FCB1 842 | LD HL,0BF00H 843 | LD C,027H ;(BDOS)ランダムブロックリード 844 | CALL BDOS 845 | READOK: 846 | LD A,H 847 | OR L 848 | LD A,(SAVE_A) 849 | LD (DTA1),A 850 | LD HL,0 851 | LD (DEFAB),HL ;DEFABの初期化 852 | JP NZ,0100H 853 | SHOW_ERROR: 854 | LD DE,ERROR 855 | LD C,9 856 | CALL BDOS 857 | LD C,8 858 | CALL BDOS 859 | XOR A 860 | INC H 861 | JR RELOAD 862 | 863 | ERROR: 864 | DB 00DH,00AH,"Insert System disk$" 865 | 866 | MAIN_END: 867 | ORG $$+0100H ;$DEPHASE 868 | AT_DOS2RELOAD: 869 | ORG DOS1RELOAD,AT_DOS2RELOAD-0100H 870 | DOS2RELOAD: 871 | INC HL ;HLは"SHELL"のポインタ 872 | LD DE,ALT_MEM 873 | LD B,64 874 | LD C,06BH ;_GENV 環境変数の獲得 875 | CALL BDOS 876 | LD DE,ALT_MEM 877 | XOR A 878 | LD C,043H ;_OPEN ファイルハンドルのオープン 879 | CALL BDOS 880 | OR A 881 | JR NZ,SHOW_ERROR 882 | PUSH BC 883 | LD DE,00100H 884 | LD HL,0BF00H 885 | LD C,48H ;_READ ファイルハンドルからの読み出し 886 | CALL BDOS 887 | POP BC 888 | OR A 889 | JR NZ,SHOW_ERROR 890 | PUSH HL 891 | LD C,45H ;_CLOSE ファイルハンドルのクローズ 892 | CALL BDOS 893 | POP HL 894 | JR READOK 895 | DOS2RELOAD_: 896 | ORG $$+0100H ;$DEPHASE 897 | -------------------------------------------------------------------------------- /DOS.LST: -------------------------------------------------------------------------------- 1 |  ;*** AILZ80ASM *** Z-80 Assembler, version 1.0.21.0, LST:Full:4 2 | ; 似非DOS 3 | 4 | INCLUDE "DEF.ASM" 5 | ; 6 | ; 似非DOS 7 | ; 8 | 0026 VER_BCD EQU 00026H 9 | 10 | 0005 SYSTEM EQU 00005H 11 | 005C FCB1 EQU 0005CH 12 | 006C FCB2 EQU 0006CH 13 | 0080 DTA1 EQU 00080H 14 | 15 | 000C RDSLT EQU 0000CH 16 | 001C CALSLT EQU 0001CH 17 | 006C INITXT EQU 0006CH 18 | 006F INIT32 EQU 0006FH 19 | 0078 SETTXT EQU 00078H 20 | 007B SETT32 EQU 0007BH 21 | 0147 FORMAT EQU 00147H 22 | 23 | 0402 MAPPER EQU 00402H 24 | 25 | F307 FCB11 EQU 0F307H 26 | F37D BDOS EQU 0F37DH 27 | F3AF LINL32 EQU 0F3AFH 28 | F3AE LINL40 EQU 0F3AEH 29 | F3B0 LINLEN EQU 0F3B0H 30 | 31 | F41F KBUF EQU 0F41FH; 318 32 | F55E BUF EQU 0F55EH; 258 33 | 34 | F662 DIMFLG EQU 0F662H 35 | F663 VALTYP EQU 0F663H 36 | F672 MEMSIZ EQU 0F672H 37 | F6A7 TEMP EQU 0F6A7H 38 | F6AF SAVTXT EQU 0F6AFH 39 | F6B1 SAVSTK EQU 0F6B1H 40 | F6B5 DOT EQU 0F6B5H 41 | F6B9 ONELIN EQU 0F6B9H 42 | 43 | F7C4 TRCFLG EQU 0F7C4H 44 | 45 | FAF8 EXBRSA EQU 0FAF8H 46 | 47 | FC9B INTFLG EQU 0FC9BH 48 | FCA9 CSRSW EQU 0FCA9H 49 | FCC1 EXPTBL EQU 0FCC1H 50 | FFCA EXTBIOS EQU 0FFCAH 51 | [EOF:DEF.ASM:UTF_8] 52 | 53 | F662 DE_MEM_SIZE EQU DIMFLG 54 | F663 SAVE_A EQU VALTYP 55 | F6A7 EXTSP EQU TEMP 56 | F6AF DEFAB EQU SAVTXT 57 | F6B5 _DTA EQU DOT 58 | 59 | F41F ALT_MEM EQU KBUF 60 | F45F ALT_MEM2 EQU ALT_MEM+64 61 | F49F ALT_MEM3 EQU ALT_MEM2+64 62 | F4DF SAVE_C EQU ALT_MEM3+64 63 | F4E0 IS_SAVE_IX_VAUE EQU SAVE_C+1 64 | F4E1 SAVE_DE EQU IS_SAVE_IX_VAUE+1 65 | F4E3 SAVE_HL EQU SAVE_DE+2 66 | F4E5 SAVE_IX EQU SAVE_HL+2 67 | F4E7 SAVE_IY EQU SAVE_IX+2 68 | 69 | 000000 0100 ORG 00100H 70 | 000000 0100 CD6BF3 17 CALL 0F36BH ;ページ1をメインRAMに切り替える 71 | 000003 0103 3EC3 7 LD A,0C3H ;JP 72 | 000005 0105 320000 13 LD (0),A ;WBOOT 73 | 000008 0108 320500 13 LD (SYSTEM),A 74 | 00000B 010B AF 4 XOR A 75 | 00000C 010C 32C4F7 13 LD (TRCFLG),A 76 | 77 | 00000F 010F 213412 10 LD HL,01234H ;NEXTOR チェックの為 78 | 000012 0112 11CDAB 10 LD DE,0ABCDH 79 | 000015 0115 DD210000 14 LD IX,0 80 | 000019 0119 016F5A 10 LD BC,05A6FH ;_DOSVER MSX-DOS のバージョン番号の獲得 81 | 00001C 011C CD7DF3 17 CALL BDOS 82 | 83 | 00001F 011F DD7C 9 LD A,IXH 84 | 000021 0121 32E703 13 LD (OS_EXT),A 85 | 000024 0124 78 4 LD A,B 86 | 000025 0125 FE02 7 CP 2 87 | 000027 0127 9F 4 SBC A,A 88 | 000028 0128 32E603 13 LD (ISDOS1),A 89 | 00002B 012B 3818 12 JR C,DOS1R 90 | 00002D 012D 216903 10 LD HL,N_SHELL ;DOS2の場合はCOMMAND.COMの読み込みに 91 | 000030 0130 118506 10 LD DE,AT_COMMAND1+1 ;ファイルハンドルを用いるものに差し替え 92 | 000033 0133 010600 10 LD BC,6 ;階層ディレクトリに対応の為 93 | 000036 0136 EDB0 LDIR 94 | 000038 0138 216A07 10 LD HL,AT_DOS2RELOAD 95 | 00003B 013B 110007 10 LD DE,AT_DOS1RELOAD 96 | 00003E 013E 013000 10 LD BC,DOS2RELOAD_-DOS2RELOAD 97 | 000041 0141 EDB0 LDIR 98 | 000043 0143 180C 12 JR DOS2R 99 | 0145 DOS1R: 100 | 000045 0145 21918A 10 LD HL,08A91H ;Tablacus Disk ROM Lite判別 101 | 000048 0148 AF 4 XOR A 102 | 000049 0149 ED52 15 SBC HL,DE 103 | 00004B 014B 2001 12 JR NZ,DOS1R1 104 | 00004D 014D 3D 4 DEC A 105 | 014E DOS1R1: 106 | 00004E 014E 32E703 13 LD (OS_EXT),A 107 | 0151 DOS2R: 108 | 000051 0151 2A72F6 16 LD HL,(MEMSIZ) 109 | 000054 0154 2E00 7 LD L,0 110 | 000056 0156 22A7F6 16 LD (EXTSP),HL 111 | 000059 0159 2E03 7 LD L,3 112 | 00005B 015B 25 4 DEC H 113 | 00005C 015C 220100 16 LD (1),HL ;WBOOT 114 | 00005F 015F 25 4 DEC H 115 | 000060 0160 25 4 DEC H 116 | 000061 0161 25 4 DEC H 117 | 000062 0162 2E00 7 LD L,0 118 | 000064 0164 22E803 16 LD (BASE),HL 119 | 000067 0167 2E04 7 LD L,4 120 | 000069 0169 F9 6 LD SP,HL 121 | 00006A 016A EB 4 EX DE,HL 122 | 00006B 016B 21EA03 10 LD HL,REAL 123 | 00006E 016E 018003 10 LD BC,MAIN_END-MAIN 124 | 000071 0171 EDB0 LDIR 125 | ;リロケータブル 126 | 000073 0173 2AE803 16 LD HL,(BASE) 127 | 000076 0176 7C 4 LD A,H 128 | 000077 0177 010800 10 LD BC,BDOS0_SWC 129 | 00007A 017A 09 11 ADD HL,BC 130 | 00007B 017B 86 7 ADD A,(HL) 131 | 00007C 017C 77 7 LD (HL),A 132 | 133 | 00007D 017D 2AE803 16 LD HL,(BASE) 134 | 000080 0180 7C 4 LD A,H 135 | 000081 0181 013D00 10 LD BC,SYS09_SWC 136 | 000084 0184 09 11 ADD HL,BC 137 | 000085 0185 86 7 ADD A,(HL) 138 | 000086 0186 77 7 LD (HL),A 139 | 140 | 000087 0187 2AE803 16 LD HL,(BASE) 141 | 00008A 018A 7C 4 LD A,H 142 | 00008B 018B 010203 10 LD BC,BOOT+2 143 | 00008E 018E 09 11 ADD HL,BC 144 | 00008F 018F 86 7 ADD A,(HL) 145 | 000090 0190 77 7 LD (HL),A 146 | 147 | 000091 0191 2AE803 16 LD HL,(BASE) 148 | 000094 0194 7C 4 LD A,H 149 | 000095 0195 010503 10 LD BC,WBOOT+2 150 | 000098 0198 09 11 ADD HL,BC 151 | 000099 0199 86 7 ADD A,(HL) 152 | 00009A 019A 77 7 LD (HL),A 153 | 154 | 00009B 019B 2AE803 16 LD HL,(BASE) 155 | 00009E 019E 7C 4 LD A,H 156 | 00009F 019F 013D01 10 LD BC,RDABS_SWC 157 | 0000A2 01A2 09 11 ADD HL,BC 158 | 0000A3 01A3 86 7 ADD A,(HL) 159 | 0000A4 01A4 77 7 LD (HL),A 160 | 161 | 0000A5 01A5 2AE803 16 LD HL,(BASE) 162 | 0000A8 01A8 7C 4 LD A,H 163 | 0000A9 01A9 014201 10 LD BC,WRABS_SWC 164 | 0000AC 01AC 09 11 ADD HL,BC 165 | 0000AD 01AD 86 7 ADD A,(HL) 166 | 0000AE 01AE 77 7 LD (HL),A 167 | 168 | 0000AF 01AF 2AE803 16 LD HL,(BASE) 169 | 0000B2 01B2 7C 4 LD A,H 170 | 0000B3 01B3 011D02 10 LD BC,BDOS_EXEC_SWC1 171 | 0000B6 01B6 09 11 ADD HL,BC 172 | 0000B7 01B7 86 7 ADD A,(HL) 173 | 0000B8 01B8 77 7 LD (HL),A 174 | 175 | 0000B9 01B9 2AE803 16 LD HL,(BASE) 176 | 0000BC 01BC 7C 4 LD A,H 177 | 0000BD 01BD 016902 10 LD BC,BDOS_EXEC_SWC2 178 | 0000C0 01C0 09 11 ADD HL,BC 179 | 0000C1 01C1 86 7 ADD A,(HL) 180 | 0000C2 01C2 77 7 LD (HL),A 181 | 182 | 0000C3 01C3 2AE803 16 LD HL,(BASE) 183 | 0000C6 01C6 7C 4 LD A,H 184 | 0000C7 01C7 012202 10 LD BC,BUF512_SWC1 185 | 0000CA 01CA 09 11 ADD HL,BC 186 | 0000CB 01CB 86 7 ADD A,(HL) 187 | 0000CC 01CC 77 7 LD (HL),A 188 | 189 | 0000CD 01CD 2AE803 16 LD HL,(BASE) 190 | 0000D0 01D0 7C 4 LD A,H 191 | 0000D1 01D1 014002 10 LD BC,BUF512_SWC2 192 | 0000D4 01D4 09 11 ADD HL,BC 193 | 0000D5 01D5 86 7 ADD A,(HL) 194 | 0000D6 01D6 77 7 LD (HL),A 195 | 196 | 0000D7 01D7 2AE803 16 LD HL,(BASE) 197 | 0000DA 01DA 7C 4 LD A,H 198 | 0000DB 01DB 016E02 10 LD BC,BUF512_SWC3 199 | 0000DE 01DE 09 11 ADD HL,BC 200 | 0000DF 01DF 86 7 ADD A,(HL) 201 | 0000E0 01E0 77 7 LD (HL),A 202 | 203 | 0000E1 01E1 2AE803 16 LD HL,(BASE) 204 | 0000E4 01E4 7C 4 LD A,H 205 | 0000E5 01E5 018002 10 LD BC,BUF512_SWC4 206 | 0000E8 01E8 09 11 ADD HL,BC 207 | 0000E9 01E9 86 7 ADD A,(HL) 208 | 0000EA 01EA 77 7 LD (HL),A 209 | 210 | 0000EB 01EB 2AE803 16 LD HL,(BASE) 211 | 0000EE 01EE 7C 4 LD A,H 212 | 0000EF 01EF 016003 10 LD BC,SHOW_ERROR+2 213 | 0000F2 01F2 09 11 ADD HL,BC 214 | 0000F3 01F3 86 7 ADD A,(HL) 215 | 0000F4 01F4 77 7 LD (HL),A 216 | 217 | 0000F5 01F5 2AE803 16 LD HL,(BASE) 218 | 0000F8 01F8 7C 4 LD A,H 219 | 0000F9 01F9 010803 10 LD BC,CONST_+2 220 | 0000FC 01FC 09 11 ADD HL,BC 221 | 0000FD 01FD 86 7 ADD A,(HL) 222 | 0000FE 01FE 77 7 LD (HL),A 223 | 224 | 0000FF 01FF 2AE803 16 LD HL,(BASE) 225 | 000102 0202 7C 4 LD A,H 226 | 000103 0203 010B03 10 LD BC,CONIN+2 227 | 000106 0206 09 11 ADD HL,BC 228 | 000107 0207 86 7 ADD A,(HL) 229 | 000108 0208 77 7 LD (HL),A 230 | 231 | 000109 0209 2AE803 16 LD HL,(BASE) 232 | 00010C 020C 7C 4 LD A,H 233 | 00010D 020D 010E03 10 LD BC,CONOUT+2 234 | 000110 0210 09 11 ADD HL,BC 235 | 000111 0211 86 7 ADD A,(HL) 236 | 000112 0212 77 7 LD (HL),A 237 | 238 | 000113 0213 2AE803 16 LD HL,(BASE) 239 | 000116 0216 7C 4 LD A,H 240 | 000117 0217 011903 10 LD BC,FCBPAT+2 241 | 00011A 021A 09 11 ADD HL,BC 242 | 00011B 021B 86 7 ADD A,(HL) 243 | 00011C 021C 77 7 LD (HL),A 244 | 245 | 00011D 021D 2AE803 16 LD HL,(BASE) 246 | 000120 0220 111500 10 LD DE,BDOS1 247 | 000123 0223 19 11 ADD HL,DE 248 | 000124 0224 EB 4 EX DE,HL 249 | 250 | 000125 0225 2AE803 16 LD HL,(BASE) 251 | 000128 0228 2E06 7 LD L,BDOS0 252 | 00012A 022A 25 4 DEC H 253 | 00012B 022B 25 4 DEC H 254 | 00012C 022C 220600 16 LD (SYSTEM+1),HL 255 | 00012F 022F 36C3 10 LD (HL),0C3H ;JP 256 | 000131 0231 23 6 INC HL 257 | 000132 0232 73 7 LD (HL),E 258 | 000133 0233 23 6 INC HL 259 | 000134 0234 72 7 LD (HL),D 260 | 261 | 000135 0235 0E19 7 LD C,19H ;(BDOS)_CURDRV カレントドライブ番号の獲得 262 | 000137 0237 CD7DF3 17 CALL BDOS 263 | 00013A 023A 3C 4 INC A 264 | 265 | 00013B 023B 2AE803 16 LD HL,(BASE) 266 | 00013E 023E 019E02 10 LD BC,FCBCMD 267 | 000141 0241 09 11 ADD HL,BC 268 | 000142 0242 77 7 LD (HL),A 269 | 000143 0243 C640 7 ADD A,040H 270 | 000145 0245 326F03 13 LD (V_SHELL),A 271 | 272 | 000148 0248 3E28 7 LD A,40 273 | 00014A 024A 32AEF3 13 LD (LINL40),A 274 | 00014D 024D FD2AC0FC 20 LD IY,(EXPTBL-1) ;メインROMスロット 275 | 000151 0251 DD216C00 14 LD IX,INITXT 276 | 000155 0255 CD1C00 17 CALL CALSLT 277 | 000158 0258 FD2AC0FC 20 LD IY,(EXPTBL-1) ;メインROMスロット 278 | 00015C 025C DD217800 14 LD IX,SETTXT 279 | 000160 0260 CD1C00 17 CALL CALSLT 280 | 281 | 000163 0263 113003 10 LD DE,TITLE 282 | 000166 0266 0E09 7 LD C,9 283 | 000168 0268 CD7DF3 17 CALL BDOS 284 | 00016B 026B 3AE603 13 LD A,(ISDOS1) 285 | 00016E 026E 87 4 ADD A,A 286 | 00016F 026F 3854 12 JR C,DOS1 287 | 000171 0271 1E32 7 LD E,'2' 288 | 000173 0273 0E02 7 LD C,2 289 | 000175 0275 CD7DF3 17 CALL BDOS 290 | 000178 0278 3AE703 13 LD A,(OS_EXT) 291 | 00017B 027B FE01 7 CP 1 292 | 00017D 027D 2008 12 JR NZ,NONEXTOR 293 | 00017F 027F 113B03 10 LD DE,TITLE_NEXTOR 294 | 000182 0282 0E09 7 LD C,9 295 | 000184 0284 CD7DF3 17 CALL BDOS 296 | 0287 NONEXTOR: 297 | 000187 0287 216903 10 LD HL,N_SHELL 298 | 00018A 028A 116F03 10 LD DE,V_SHELL 299 | 00018D 028D 0E6C 7 LD C,06CH ;_SENV 環境変数のセット 300 | 00018F 028F CD7DF3 17 CALL BDOS 301 | 302 | 000192 0292 3AC1FC 13 LD A,(EXPTBL) ;メインROMスロット 303 | 000195 0295 212B00 10 LD HL,002BH ;キャラクターセット・日時フォーマット・ビデオ信号の種別 304 | 000198 0298 CD0C00 17 CALL RDSLT 305 | 00019B 029B 0F 4 RRCA 306 | 00019C 029C 0F 4 RRCA 307 | 00019D 029D 0F 4 RRCA 308 | 00019E 029E 0F 4 RRCA 309 | 00019F 029F E603 7 AND 3 310 | 0001A1 02A1 3D 4 DEC A 311 | 0001A2 02A2 118C03 10 LD DE,V_DATE1 312 | 0001A5 02A5 2809 12 JR Z,DATEOK 313 | 0001A7 02A7 3D 4 DEC A 314 | 0001A8 02A8 119503 10 LD DE,V_DATE2 315 | 0001AB 02AB 2803 12 JR Z,DATEOK 316 | 0001AD 02AD 118303 10 LD DE,V_DATE0 317 | 02B0 DATEOK: 318 | 0001B0 02B0 217E03 10 LD HL,N_DATE 319 | 0001B3 02B3 0E6C 7 LD C,06CH ;_SENV 環境変数のセット 320 | 0001B5 02B5 CD7DF3 17 CALL BDOS 321 | 322 | 0001B8 02B8 219E03 10 LD HL,N_TIME 323 | 0001BB 02BB 11A303 10 LD DE,V_TIME 324 | 0001BE 02BE 0E6C 7 LD C,06CH ;_SENV 環境変数のセット 325 | 0001C0 02C0 CD7DF3 17 CALL BDOS 326 | 0001C3 02C3 180F 12 JR DOS2 327 | 02C5 DOS1: 328 | 0001C5 02C5 3AE703 13 LD A,(OS_EXT) 329 | 0001C8 02C8 FEFF 7 CP 0FFH 330 | 0001CA 02CA 2008 12 JR NZ,NOTABLACUS 331 | 0001CC 02CC 114403 10 LD DE,TITLE_TABLACUS 332 | 0001CF 02CF 0E09 7 LD C,9 333 | 0001D1 02D1 CD7DF3 17 CALL BDOS 334 | 02D4 NOTABLACUS: 335 | 02D4 DOS2: 336 | 0001D4 02D4 114F03 10 LD DE,TITLE2 337 | 0001D7 02D7 0E09 7 LD C,9 338 | 0001D9 02D9 CD7DF3 17 CALL BDOS 339 | 340 | 0001DC 02DC 212600 10 LD HL,VER_BCD 341 | 0001DF 02DF 7C 4 LD A,H 342 | 0001E0 02E0 CD1003 17 CALL PRTHX1 343 | 0001E3 02E3 3E2E 7 LD A,'.' 344 | 0001E5 02E5 CD1303 17 CALL MSG_A 345 | 0001E8 02E8 7D 4 LD A,L 346 | 0001E9 02E9 CD0703 17 CALL PRTHX 347 | 348 | 0001EC 02EC 115A03 10 LD DE,TITLE3 349 | 0001EF 02EF 0E09 7 LD C,9 350 | 0001F1 02F1 CD7DF3 17 CALL BDOS 351 | 352 | 0001F4 02F4 010900 10 LD BC,9 353 | 0001F7 02F7 216003 10 LD HL,AUTOEXEC 354 | 0001FA 02FA 118100 10 LD DE,DTA1+1 355 | 0001FD 02FD EDB0 LDIR 356 | 0001FF 02FF 3E09 7 LD A,9 357 | 000201 0301 2A0100 16 LD HL,(1) 358 | 000204 0304 2E10 7 LD L,CBOOT & $FF 359 | 0306 JP_HL: 360 | 000206 0306 E9 4 JP (HL) 361 | 362 | 0307 PRTHX: 363 | 000207 0307 F5 11 PUSH AF 364 | 000208 0308 07 4 RLCA 365 | 000209 0309 07 4 RLCA 366 | 00020A 030A 07 4 RLCA 367 | 00020B 030B 07 4 RLCA 368 | 00020C 030C CD1003 17 CALL PRTHX1 369 | 00020F 030F F1 10 POP AF 370 | 0310 PRTHX1: 371 | 000210 0310 CD2603 17 CALL ASC 372 | 0313 MSG_A: 373 | 000213 0313 F5 11 PUSH AF 374 | 000214 0314 C5 11 PUSH BC 375 | 000215 0315 D5 11 PUSH DE 376 | 000216 0316 E5 11 PUSH HL 377 | 000217 0317 DDE5 15 PUSH IX 378 | 000219 0319 5F 4 LD E,A 379 | 00021A 031A 0E02 7 LD C,2 380 | 00021C 031C CD0500 17 CALL SYSTEM 381 | 00021F 031F DDE1 14 POP IX 382 | 000221 0321 E1 10 POP HL 383 | 000222 0322 D1 10 POP DE 384 | 000223 0323 C1 10 POP BC 385 | 000224 0324 F1 10 POP AF 386 | 000225 0325 C9 10 RET 387 | 388 | 0326 ASC: 389 | 000226 0326 E60F 7 AND 00FH 390 | 000228 0328 F630 7 OR '0' 391 | 00022A 032A FE39 7 CP '9' 392 | 00022C 032C D8 11 RET C 393 | 00022D 032D C607 7 ADD A,7 394 | 00022F 032F C9 10 RET 395 | 396 | 0330 TITLE: 397 | 000230 0330 70736575646F2044 DB "pseudo DOS$" 398 | 4F5324 399 | 033B TITLE_NEXTOR: 400 | 00023B 033B 284E4558544F5229 DB "(NEXTOR)$" 401 | 24 402 | 0344 TITLE_TABLACUS: 403 | 000244 0344 285461626C616375 DB "(Tablacus)$" 404 | 732924 405 | 034F TITLE2: 406 | 00024F 034F 20666F72204D5358 DB " for MSX v$" 407 | 207624 408 | 035A TITLE3: 409 | 00025A 035A 2047616B7524 DB " Gaku$" 410 | 0360 AUTOEXEC: 411 | 000260 0360 4155544F45584543 DB "AUTOEXEC",0 412 | 00 413 | 0369 N_SHELL: 414 | 000269 0369 5348454C4C00 DB "SHELL",0 415 | 036F V_SHELL: 416 | 00026F 036F 413A5C434F4D4D41 DB "A:\\COMMAND.COM",0 417 | 4E442E434F4D00 418 | 037E N_DATE: 419 | 00027E 037E 4441544500 DB "DATE",0 420 | 0383 V_DATE0: 421 | 000283 0383 79792D6D6D2D6464 DB "yy-mm-dd",0 422 | 00 423 | 038C V_DATE1: 424 | 00028C 038C 6D6D2D64642D7979 DB "mm-dd-yy",0 425 | 00 426 | 0395 V_DATE2: 427 | 000295 0395 64642D6D6D2D7979 DB "dd-mm-yy",0 428 | 00 429 | 039E N_TIME: 430 | 00029E 039E 54494D4500 DB "TIME",0 431 | 03A3 V_TIME: 432 | 0002A3 03A3 323400 DB "24",0 433 | 03A6 Z_TIME: 434 | 0002A6 03A6 DS 64 435 | 03E6 ISDOS1: 436 | 0002E6 03E6 00 DB 0 437 | 03E7 OS_EXT: 438 | 0002E7 03E7 00 DB 0 439 | 03E8 BASE: 440 | 0002E8 03E8 0000 DW 0 441 | 03EA REAL: 442 | 0002EA 0004 ORG 4,REAL-0100H 443 | 0004 MAIN: 444 | 0002EA 0004 0000 DW 0 445 | 0006 BDOS0: 446 | 0002EC 0006 C31500 10 JP BDOS1 447 | 0008 BDOS0_SWC EQU $-1 448 | 0009 TERM: 449 | 0002EF 0009 78 4 LD A,B 450 | 0002F0 000A 32C4F7 13 LD (TRCFLG),A 451 | 0002F3 000D 210000 10 LD HL,0 452 | 0002F6 0010 E5 11 PUSH HL 453 | 0002F7 0011 2AAFF6 16 LD HL,(DEFAB) 454 | 0002FA 0014 E9 4 JP (HL) 455 | 0015 BDOS1: 456 | 0002FB 0015 0C 4 INC C 457 | 0002FC 0016 0D 4 DEC C 458 | ;BDOS0+013Hを0にするとバッチ停止されるため0が書き込みされる場合がある 459 | 0002FD 0017 CA0000 10 JP Z,0 ;だから、ここのアドレスをBDOS0+011HもしくはBDOS0+012Hにする 460 | 000300 001A ED73B1F6 20 LD (SAVSTK),SP 461 | 000304 001E 3263F6 13 LD (SAVE_A),A 462 | 000307 0021 DD22E5F4 20 LD (SAVE_IX),IX 463 | 00030B 0025 FD22E7F4 20 LD (SAVE_IY),IY 464 | 00030F 0029 79 4 LD A,C 465 | 000310 002A FE62 7 CP 062H ;_TERM エラーコードを返して終了 466 | 000312 002C 28DB 12 JR Z,TERM 467 | 000314 002E 3AB2F6 13 LD A,(SAVSTK+1) 468 | 000317 0031 87 4 ADD A,A 469 | 000318 0032 3804 12 JR C,BDOS_SPOK 470 | 00031A 0034 ED7BA7F6 20 LD SP,(EXTSP) 471 | 0038 BDOS_SPOK: 472 | 00031E 0038 79 4 LD A,C 473 | 00031F 0039 FE09 7 CP 9 ;_STROUT 文字列出力 474 | 000321 003B CAFA01 10 JP Z,_SYS09 475 | 003D SYS09_SWC EQU $-1 476 | 000324 003E FE63 7 CP 063H ;_DEFAB アボート終了ルーチンの定義 477 | 000326 0040 2004 12 JR NZ,BDOS2 478 | 000328 0042 ED53AFF6 20 LD (DEFAB),DE 479 | 0046 BDOS2: 480 | 00032C 0046 FE1A 7 CP 01AH ;_SETDTA DTAの設定 481 | 00032E 0048 2004 12 JR NZ,BDOS2_ 482 | 000330 004A ED53B5F6 20 LD (_DTA),DE 483 | 004E BDOS2_: 484 | 000334 004E 32DFF4 13 LD (SAVE_C),A 485 | 000337 0051 FE0F 7 CP 00FH ;_FOPEN ファイルオープン 486 | 000339 0053 3859 12 JR C,SAVEFCB0 487 | 00033B 0055 FE12 7 CP 012H ;_SNEXT ファイル検索 続き 488 | 00033D 0057 2004 12 JR NZ,NOBD12 489 | 00033F 0059 ED5B07F3 20 LD DE,(FCB11) 490 | 005D NOBD12: 491 | 000343 005D FE18 7 CP 018H ;_LOGIN ログインベクトルの獲得 492 | 000345 005F 383A 12 JR C,SAVEFCB36 493 | 000347 0061 FE21 7 CP 021H ;_RDRND ランダム読み出し 494 | 000349 0063 3849 12 JR C,SAVEFCB0 495 | 00034B 0065 FE29 7 CP 028H+1 ;_WRZER ゼロ書き込みを伴うランダム書き込み+1 496 | 00034D 0067 3832 12 JR C,SAVEFCB36 497 | 00034F 0069 FE31 7 CP 031H ;_DPARM ディスクパラメータの獲得 498 | 000351 006B 282E 12 JR Z,SAVEFCB36 499 | 000353 006D FE40 7 CP 040H ;_FFIRST 最初のエントリ検索 500 | 000355 006F 282A 12 JR Z,SAVE_PATH 501 | 000357 0071 FE42 7 CP 042H ;_FNEW 新しいエントリの検索 502 | 000359 0073 2826 12 JR Z,SAVE_PATH 503 | 00035B 0075 FE43 7 CP 043H ;_OPEN ファイルハンドルのオープン 504 | 00035D 0077 2822 12 JR Z,SAVE_PATH 505 | 00035F 0079 FE44 7 CP 044H ;_CREATE ファイルハンドルの作成 506 | 000361 007B 281E 12 JR Z,SAVE_PATH 507 | 000363 007D FE4C 7 CP 04CH ;_HTEST ファイルハンドルの検査 508 | 000365 007F 281A 12 JR Z,SAVE_PATH 509 | 000367 0081 FE4D 7 CP 04DH ;_DELETE ファイル、サブディレクトリの削除 510 | 000369 0083 3829 12 JR C,SAVEFCB0 511 | 00036B 0085 FE52 7 CP 051H+1 ;_FTIME ファイルの日付および時刻の獲得・設定 512 | 00036D 0087 3812 12 JR C,SAVE_PATH 513 | 00036F 0089 FE59 7 CP 059H ;_GETCD カレントディレクトリの獲得 514 | 000371 008B 3821 12 JR C,SAVEFCB0 515 | 000373 008D FE5D 7 CP 05CH+1 ;_PFILE ファイル名の解析+1 516 | 000375 008F 380A 12 JR C,SAVE_PATH 517 | 000377 0091 FE5E 7 CP 05EH ;_WPATH パス文字列全体の獲得 518 | 000379 0093 2806 12 JR Z,SAVE_PATH 519 | 00037B 0095 FE66 7 CP 066H ;_EXPLAIN エラーコードの説明 520 | 00037D 0097 2802 12 JR Z,SAVE_PATH 521 | 00037F 0099 1813 12 JR SAVEFCB0 522 | 009B SAVEFCB36: 523 | 009B SAVE_PATH: 524 | 000381 009B 7A 4 LD A,D 525 | 000382 009C FE3F 7 CP 03FH ;ページ1にかぶる? 526 | 000384 009E 380E 12 JR C,SAVEFCB0 527 | 000386 00A0 FE80 7 CP 080H 528 | 000388 00A2 300A 12 JR NC,SAVEFCB0 529 | 00038A 00A4 3E24 7 LD A,36 530 | 00038C 00A6 CB71 8 BIT 6,C ;DOS2のファンクションコール? 531 | 00038E 00A8 2805 12 JR Z,SAVEFCB1 532 | 000390 00AA 3E40 7 LD A,64 ;DOS2CALLは64バイト設定する 533 | 000392 00AC 1801 12 JR SAVEFCB1 534 | 00AE SAVEFCB0: 535 | 000394 00AE AF 4 XOR A 536 | 00AF SAVEFCB1: 537 | 000395 00AF 3262F6 13 LD (DE_MEM_SIZE),A 538 | 000398 00B2 B7 4 OR A 539 | 000399 00B3 2815 12 JR Z,BDOS3 540 | 00039B 00B5 C5 11 PUSH BC 541 | 00039C 00B6 E5 11 PUSH HL 542 | 00039D 00B7 ED53E1F4 20 LD (SAVE_DE),DE 543 | 0003A1 00BB 4F 4 LD C,A 544 | 0003A2 00BC 0600 7 LD B,0 545 | 0003A4 00BE 211FF4 10 LD HL,ALT_MEM 546 | 0003A7 00C1 EB 4 EX DE,HL 547 | 0003A8 00C2 D5 11 PUSH DE 548 | 0003A9 00C3 EDB0 LDIR 549 | 0003AB 00C5 AF 4 XOR A 550 | 0003AC 00C6 12 7 LD (DE),A 551 | 0003AD 00C7 D1 10 POP DE 552 | 0003AE 00C8 E1 10 POP HL 553 | 0003AF 00C9 C1 10 POP BC 554 | 00CA BDOS3: 555 | 0003B0 00CA AF 4 XOR A 556 | 0003B1 00CB 32E0F4 13 LD (IS_SAVE_IX_VAUE),A 557 | 0003B4 00CE 79 4 LD A,C 558 | 0003B5 00CF FE40 7 CP 040H ;最初のエントリ検索 559 | 0003B7 00D1 3825 12 JR C,BDOS3IX ;次のエントリ検索 560 | 0003B9 00D3 FE43 7 CP 042H+1 ;新しいエントリの検索 561 | 0003BB 00D5 3021 12 JR NC,BDOS3IX 562 | 0003BD 00D7 DD7C 9 LD A,IXH 563 | 0003BF 00D9 FE3F 7 CP 03FH ;ページ1にかぶる? 564 | 0003C1 00DB 381B 12 JR C,BDOS3IX 565 | 0003C3 00DD FE80 7 CP 080H ; 566 | 0003C5 00DF 3017 12 JR NC,BDOS3IX 567 | 0003C7 00E1 32E0F4 13 LD (IS_SAVE_IX_VAUE),A 568 | 0003CA 00E4 C5 11 PUSH BC 569 | 0003CB 00E5 D5 11 PUSH DE 570 | 0003CC 00E6 E5 11 PUSH HL 571 | 0003CD 00E7 DDE5 15 PUSH IX 572 | 0003CF 00E9 E1 10 POP HL 573 | 0003D0 00EA 115FF4 10 LD DE,ALT_MEM2 574 | 0003D3 00ED 014000 10 LD BC,64 575 | 0003D6 00F0 D5 11 PUSH DE 576 | 0003D7 00F1 EDB0 LDIR 577 | 0003D9 00F3 DDE1 14 POP IX 578 | 0003DB 00F5 E1 10 POP HL 579 | 0003DC 00F6 D1 10 POP DE 580 | 0003DD 00F7 C1 10 POP BC 581 | 00F8 BDOS3IX: 582 | 0003DE 00F8 AF 4 XOR A 583 | 0003DF 00F9 32E4F4 13 LD (SAVE_HL+1),A 584 | 0003E2 00FC 79 4 LD A,C 585 | 0003E3 00FD FE4E 7 CP 4EH ;_RENAME ファイルあるいはサブディレクトリ名の変更 586 | 0003E5 00FF 281C 12 JR Z,SAVE_HL1 587 | 0003E7 0101 FE4F 7 CP 4FH ;_MOVE ファイルあるいはサブディレクトリの移動 588 | 0003E9 0103 2818 12 JR Z,SAVE_HL1 589 | 0003EB 0105 FE53 7 CP 53H ;_HRENAME ファイルハンドルの名前の変更 590 | 0003ED 0107 2814 12 JR Z,SAVE_HL1 591 | 0003EF 0109 FE54 7 CP 54H ;_HMOVE ファイルハンドルの移動 592 | 0003F1 010B 2810 12 JR Z,SAVE_HL1 593 | 0003F3 010D FE5C 7 CP 05CH ;_PFILE ファイル名の解析 594 | 0003F5 010F 280C 12 JR Z,SAVE_HL1 595 | 0003F7 0111 FE40 7 CP 040H ;_FFIRST 最初のエントリ検索 596 | 0003F9 0113 2804 12 JR Z,FIBCHECK 597 | 0003FB 0115 FE42 7 CP 042H ;_FNEW 新しいエントリ検索 598 | 0003FD 0117 201F 12 JR NZ,BDOS3HL 599 | 0119 FIBCHECK: 600 | 0003FF 0119 1A 7 LD A,(DE) 601 | 000400 011A 3C 4 INC A ;DEがFIBならば0FFH 602 | 000401 011B 201B 12 JR NZ,BDOS3HL 603 | 011D SAVE_HL1: 604 | 000403 011D 7C 4 LD A,H 605 | 000404 011E FE3F 7 CP 03FH ;ページ1にかぶる? 606 | 000406 0120 3816 12 JR C,BDOS3HL 607 | 000408 0122 FE80 7 CP 080H ; 608 | 00040A 0124 3012 12 JR NC,BDOS3HL 609 | 00040C 0126 22E3F4 16 LD (SAVE_HL),HL 610 | 00040F 0129 C5 11 PUSH BC 611 | 000410 012A D5 11 PUSH DE 612 | 000411 012B 014000 10 LD BC,64 613 | 000414 012E 119FF4 10 LD DE,ALT_MEM3 614 | 000417 0131 EDB0 LDIR 615 | 000419 0133 D1 10 POP DE 616 | 00041A 0134 C1 10 POP BC 617 | 00041B 0135 219FF4 10 LD HL,ALT_MEM3 618 | 0138 BDOS3HL: 619 | 00041E 0138 79 4 LD A,C 620 | 00041F 0139 FE2F 7 CP 02FH 621 | 000421 013B CA1702 10 JP Z,RDABS 622 | 013D RDABS_SWC EQU $-1 623 | 000424 013E FE30 7 CP 030H 624 | 000426 0140 CA6302 10 JP Z,WRABS 625 | 0142 WRABS_SWC EQU $-1 626 | 0143 BDOS_EXEC: 627 | 000429 0143 3A63F6 13 LD A,(SAVE_A) 628 | 00042C 0146 CD7DF3 17 CALL BDOS 629 | 630 | 00042F 0149 F5 11 PUSH AF 631 | 000430 014A 3ADFF4 13 LD A,(SAVE_C) 632 | 000433 014D FE1B 7 CP 01BH ;アロケーション情報の獲得 633 | 000435 014F 2823 12 JR Z,BDOS4IX 634 | 000437 0151 FE6F 7 CP 06FH ;MSX-DOSのバージョン番号の獲得 635 | 000439 0153 281F 12 JR Z,BDOS4IX 636 | 00043B 0155 DD2AE5F4 20 LD IX,(SAVE_IX) 637 | 00043F 0159 FD2AE7F4 20 LD IY,(SAVE_IY) 638 | 000443 015D 3AE0F4 13 LD A,(IS_SAVE_IX_VAUE) ;最初のエントリ検索 + 次のエントリ検索 639 | 000446 0160 B7 4 OR A 640 | 000447 0161 2811 12 JR Z,BDOS4IX 641 | 000449 0163 C5 11 PUSH BC 642 | 00044A 0164 D5 11 PUSH DE 643 | 00044B 0165 E5 11 PUSH HL 644 | 00044C 0166 DDE5 15 PUSH IX 645 | 00044E 0168 D1 10 POP DE 646 | 00044F 0169 215FF4 10 LD HL,ALT_MEM2 647 | 000452 016C 014000 10 LD BC,64 648 | 000455 016F EDB0 LDIR 649 | 000457 0171 E1 10 POP HL 650 | 000458 0172 D1 10 POP DE 651 | 000459 0173 C1 10 POP BC 652 | 0174 BDOS4IX: 653 | 00045A 0174 3A62F6 13 LD A,(DE_MEM_SIZE) 654 | 00045D 0177 B7 4 OR A 655 | 00045E 0178 2812 12 JR Z,BDOS4 656 | 000460 017A C5 11 PUSH BC 657 | 000461 017B D5 11 PUSH DE 658 | 000462 017C E5 11 PUSH HL 659 | 000463 017D 4F 4 LD C,A 660 | 000464 017E 0600 7 LD B,0 661 | 000466 0180 211FF4 10 LD HL,ALT_MEM 662 | 000469 0183 ED5BE1F4 20 LD DE,(SAVE_DE) 663 | 00046D 0187 EDB0 LDIR 664 | 00046F 0189 E1 10 POP HL 665 | 000470 018A D1 10 POP DE 666 | 000471 018B C1 10 POP BC 667 | 018C BDOS4: 668 | 000472 018C 3AE4F4 13 LD A,(SAVE_HL+1) 669 | 000475 018F B7 4 OR A 670 | 000476 0190 2812 12 JR Z,BDOS5 671 | 000478 0192 C5 11 PUSH BC 672 | 000479 0193 D5 11 PUSH DE 673 | 00047A 0194 E5 11 PUSH HL 674 | 00047B 0195 010B00 10 LD BC,11 675 | 00047E 0198 219FF4 10 LD HL,ALT_MEM3 676 | 000481 019B ED5BE3F4 20 LD DE,(SAVE_HL) 677 | 000485 019F EDB0 LDIR 678 | 000487 01A1 E1 10 POP HL 679 | 000488 01A2 D1 10 POP DE 680 | 000489 01A3 C1 10 POP BC 681 | 01A4 BDOS5: 682 | 00048A 01A4 3ADFF4 13 LD A,(SAVE_C) 683 | 00048D 01A7 FE6F 7 CP 06FH ;_DOSVER MSX-DOSのバージョン番号の獲得 684 | 00048F 01A9 2013 12 JR NZ,BDOS7 685 | 000491 01AB 04 4 INC B 686 | 000492 01AC 05 4 DEC B 687 | 000493 01AD 2802 12 JR Z,S6F_1 688 | 000495 01AF 59 4 LD E,C ;DOS2の場合 689 | 000496 01B0 50 4 LD D,B ;MSXDOS2.SYSのバージョンをカーネルに合わす 690 | 01B1 S6F_1: 691 | 000497 01B1 DD25 10 DEC IXH ;NEXTOR判別 692 | 000499 01B3 2807 12 JR Z,NEXTOR 693 | 00049B 01B5 DD21EDEC 14 LD IX,0ECEDH ;似非DOS判別用(INC IXがあるのでIXが0EDEDHになる) 694 | 00049F 01B9 212600 10 LD HL,VER_BCD ;NEXTORじゃない場合はHLに似非DOSのバージョンが返る 695 | 01BC NEXTOR: 696 | 0004A2 01BC DD24 10 INC IXH 697 | 01BE BDOS7: 698 | 0004A4 01BE FE5B 7 CP 05BH ;_PARSE パス名の解析 699 | 0004A6 01C0 2804 12 JR Z,BDOS8 700 | 0004A8 01C2 FE5E 7 CP 05EH ;_WPATH パス文字列全体の獲得 701 | 0004AA 01C4 201E 12 JR NZ,BDOS6 702 | 01C6 BDOS8: 703 | 0004AC 01C6 3A62F6 13 LD A,(DE_MEM_SIZE) 704 | 0004AF 01C9 2819 12 JR Z,BDOS6 705 | 0004B1 01CB C5 11 PUSH BC 706 | 0004B2 01CC 011FF4 10 LD BC,ALT_MEM 707 | 0004B5 01CF ED42 15 SBC HL,BC ;CF=0のハズ 708 | 0004B7 01D1 ED4BE1F4 20 LD BC,(SAVE_DE) 709 | 0004BB 01D5 09 11 ADD HL,BC 710 | 0004BC 01D6 EB 4 EX DE,HL 711 | 0004BD 01D7 011FF4 10 LD BC,ALT_MEM 712 | 0004C0 01DA A7 4 AND A ;念のためにCF=0にする 713 | 0004C1 01DB ED42 15 SBC HL,BC 714 | 0004C3 01DD ED4BE1F4 20 LD BC,(SAVE_DE) 715 | 0004C7 01E1 09 11 ADD HL,BC 716 | 0004C8 01E2 EB 4 EX DE,HL 717 | 0004C9 01E3 C1 10 POP BC 718 | 01E4 BDOS6: 719 | 0004CA 01E4 F1 10 POP AF 720 | 0004CB 01E5 ED7BB1F6 20 LD SP,(SAVSTK) 721 | 0004CF 01E9 C9 10 RET 722 | 723 | 01EA CONST1: 724 | 0004D0 01EA 0E0B 7 LD C,0BH 725 | 0004D2 01EC C30500 10 JP SYSTEM 726 | 01EF CONIN1: 727 | 0004D5 01EF 0E07 7 LD C,7 728 | 0004D7 01F1 C30500 10 JP SYSTEM 729 | 01F4 CONOUT1: 730 | 0004DA 01F4 59 4 LD E,C 731 | 0004DB 01F5 0E02 7 LD C,2 732 | 0004DD 01F7 C30500 10 JP SYSTEM 733 | 734 | 01FA _SYS09: ;_STROUT 文字列出力 735 | 0004E0 01FA 1A 7 LD A,(DE) 736 | 0004E1 01FB 13 6 INC DE 737 | 0004E2 01FC FE24 7 CP '$' 738 | 0004E4 01FE 280A 12 JR Z,S09X1 739 | 0004E6 0200 D5 11 PUSH DE 740 | 0004E7 0201 0E02 7 LD C,2 741 | 0004E9 0203 5F 4 LD E,A 742 | 0004EA 0204 CD7DF3 17 CALL BDOS 743 | 0004ED 0207 D1 10 POP DE 744 | 0004EE 0208 18F0 12 JR _SYS09 745 | 746 | 020A S09X1: 747 | 0004F0 020A ED7BB1F6 20 LD SP,(SAVSTK) 748 | 0004F4 020E DD2AE5F4 20 LD IX,(SAVE_IX) 749 | 0004F8 0212 FD2AE7F4 20 LD IY,(SAVE_IY) 750 | 0004FC 0216 C9 10 RET 751 | 752 | 0217 RDABS: 753 | 0004FD 0217 3AB6F6 13 LD A,(_DTA+1) 754 | 000500 021A 87 4 ADD A,A 755 | 000501 021B DA4301 10 JP C,BDOS_EXEC 756 | 021D BDOS_EXEC_SWC1 EQU $-1 757 | 758 | 000504 021E D5 11 PUSH DE 759 | 000505 021F E5 11 PUSH HL 760 | 000506 0220 1109FE 10 LD DE,TERM-0200H 761 | 0222 BUF512_SWC1 EQU $-1 762 | 000509 0223 0E1A 7 LD C,01AH ;_SETDTA 763 | 00050B 0225 CD7DF3 17 CALL BDOS 764 | 00050E 0228 E1 10 POP HL 765 | 00050F 0229 D1 10 POP DE 766 | 767 | 000510 022A ED4BB5F6 20 LD BC,(_DTA) 768 | 022E RDABS1: 769 | 000514 022E D5 11 PUSH DE 770 | 000515 022F E5 11 PUSH HL 771 | 000516 0230 C5 11 PUSH BC 772 | 000517 0231 2601 7 LD H,1 773 | 000519 0233 0E2F 7 LD C,02FH ;_RDABS 774 | 00051B 0235 CD7DF3 17 CALL BDOS 775 | 00051E 0238 E1 10 POP HL ;<=転送先 776 | 00051F 0239 FEFF 7 CP 0FFH 777 | 000521 023B 2814 12 JR Z,RDABS_ERR 778 | 000523 023D EB 4 EX DE,HL 779 | 000524 023E 2109FE 10 LD HL,TERM-0200H 780 | 0240 BUF512_SWC2 EQU $-1 781 | 000527 0241 010002 10 LD BC,512 782 | 00052A 0244 EDB0 LDIR 783 | 00052C 0246 4B 4 LD C,E 784 | 00052D 0247 42 4 LD B,D 785 | 00052E 0248 E1 10 POP HL 786 | 00052F 0249 D1 10 POP DE 787 | 000530 024A 13 6 INC DE 788 | 000531 024B 25 4 DEC H 789 | 000532 024C 20E0 12 JR NZ,RDABS1 790 | 024E WRABS_OK: 791 | 000534 024E AF 4 XOR A 792 | 024F WRABS_ERR: 793 | 000535 024F D5 11 PUSH DE 794 | 000536 0250 E5 11 PUSH HL 795 | 0251 RDABS_ERR: 796 | 000537 0251 F5 11 PUSH AF 797 | 000538 0252 ED5BB5F6 20 LD DE,(_DTA) 798 | 00053C 0256 0E1A 7 LD C,01AH ;_SETDTA 799 | 00053E 0258 CD7DF3 17 CALL BDOS 800 | 000541 025B F1 10 POP AF 801 | 000542 025C E1 10 POP HL 802 | 000543 025D D1 10 POP DE 803 | 000544 025E ED7BB1F6 20 LD SP,(SAVSTK) 804 | 000548 0262 C9 10 RET 805 | 806 | 0263 WRABS: 807 | 000549 0263 3AB6F6 13 LD A,(_DTA+1) 808 | 00054C 0266 87 4 ADD A,A 809 | 00054D 0267 DA4301 10 JP C,BDOS_EXEC 810 | 0269 BDOS_EXEC_SWC2 EQU $-1 811 | 000550 026A D5 11 PUSH DE 812 | 000551 026B E5 11 PUSH HL 813 | 000552 026C 1109FE 10 LD DE,TERM-0200H 814 | 026E BUF512_SWC3 EQU $-1 815 | 000555 026F 0E1A 7 LD C,01AH ;_SETDTA 816 | 000557 0271 CD7DF3 17 CALL BDOS 817 | 00055A 0274 E1 10 POP HL 818 | 00055B 0275 D1 10 POP DE 819 | 820 | 00055C 0276 ED4BB5F6 20 LD BC,(_DTA) 821 | 027A WRABS1: 822 | 000560 027A D5 11 PUSH DE 823 | 000561 027B E5 11 PUSH HL 824 | 000562 027C 69 4 LD L,C 825 | 000563 027D 60 4 LD H,B 826 | 000564 027E 1109FE 10 LD DE,TERM-0200H 827 | 0280 BUF512_SWC4 EQU $-1 828 | 000567 0281 010002 10 LD BC,512 829 | 00056A 0284 EDB0 LDIR 830 | 00056C 0286 E3 19 EX (SP),HL 831 | 00056D 0287 D1 10 POP DE 832 | 833 | 00056E 0288 D5 11 PUSH DE 834 | 00056F 0289 E5 11 PUSH HL 835 | 000570 028A 2601 7 LD H,1 836 | 000572 028C 0E30 7 LD C,030H ;_WRABS 837 | 000574 028E CD7DF3 17 CALL BDOS 838 | 000577 0291 E1 10 POP HL 839 | 000578 0292 D1 10 POP DE 840 | 000579 0293 C1 10 POP BC 841 | 00057A 0294 FEFF 7 CP 0FFH 842 | 00057C 0296 28B7 12 JR Z,WRABS_ERR 843 | 00057E 0298 13 6 INC DE 844 | 00057F 0299 25 4 DEC H 845 | 000580 029A 20DE 12 JR NZ,WRABS1 846 | 000582 029C 18B0 12 JR WRABS_OK 847 | 848 | 029E FCBCMD: 849 | 000584 0684 ORG $$+0100H ;$DEPHASE 850 | 0684 AT_COMMAND1: 851 | 000584 029E ORG FCBCMD,AT_COMMAND1-0100H 852 | 000584 029E 00434F4D4D414E44 DB 0,"COMMAND COM",0,0,0,0 853 | 20434F4D00000000 854 | 855 | 02AE AT: 856 | 000594 02AE DS 0300H-37-AT 857 | 02DB FCB_BAT: 858 | 0005C1 02DB DS 37 ;バッチファイル用のFCB 859 | ; 下位1バイト0になるように 860 | 0300 BOOT: 861 | 0005E6 0300 C30F03 10 JP WBOOT1 862 | 0303 WBOOT: 863 | 0005E9 0303 C30F03 10 JP WBOOT1 864 | 0306 CONST_: ;(BDOS)コンソール直接入力 865 | 0005EC 0306 C3EA01 10 JP CONST1 866 | 0309 CONIN: 867 | 0005EF 0309 C3EF01 10 JP CONIN1 868 | 030C CONOUT: 869 | 0005F2 030C C3F401 10 JP CONOUT1 870 | 871 | 030F WBOOT1: 872 | 0005F5 030F AF 4 XOR A 873 | 0310 CBOOT: 874 | 0005F6 0310 3263F6 13 LD (SAVE_A),A 875 | 0005F9 0313 ED7B0600 20 LD SP,(SYSTEM+1) 876 | 0317 RELOAD: 877 | 0005FD 0317 219E02 10 FCBPAT: LD HL,FCBCMD 878 | 031A DOS1RELOAD: 879 | 0700 AT_DOS1RELOAD EQU $$+0100H 880 | 000600 031A 115C00 10 LD DE,FCB1 881 | 000603 031D 011000 10 LD BC,16 882 | 000606 0320 EDB0 LDIR 883 | 884 | 000608 0322 115C00 10 LD DE,FCB1 885 | 00060B 0325 0E0F 7 LD C,00FH ;(BDOS)_FOPEN ファイルオープン 886 | 00060D 0327 CD7DF3 17 CALL BDOS 887 | 000610 032A B7 4 OR A 888 | 000611 032B 2031 12 JR NZ,SHOW_ERROR 889 | 000613 032D 210000 10 LD HL,0 890 | 000616 0330 227D00 16 LD (FCB1+33),HL 891 | 000619 0333 227F00 16 LD (FCB1+35),HL 892 | 00061C 0336 2C 4 INC L 893 | 00061D 0337 226A00 16 LD (FCB1+14),HL 894 | 895 | 000620 033A 110001 10 LD DE,00100H 896 | 000623 033D 0E1A 7 LD C,01AH ;(BDOS)DTAの設定 897 | 000625 033F CD7DF3 17 CALL BDOS 898 | 899 | 000628 0342 115C00 10 LD DE,FCB1 900 | 00062B 0345 2100BF 10 LD HL,0BF00H 901 | 00062E 0348 0E27 7 LD C,027H ;(BDOS)ランダムブロックリード 902 | 000630 034A CD7DF3 17 CALL BDOS 903 | 034D READOK: 904 | 000633 034D 7C 4 LD A,H 905 | 000634 034E B5 4 OR L 906 | 000635 034F 3A63F6 13 LD A,(SAVE_A) 907 | 000638 0352 328000 13 LD (DTA1),A 908 | 00063B 0355 210000 10 LD HL,0 909 | 00063E 0358 22AFF6 16 LD (DEFAB),HL ;DEFABの初期化 910 | 000641 035B C20001 10 JP NZ,0100H 911 | 035E SHOW_ERROR: 912 | 000644 035E 116F03 10 LD DE,ERROR 913 | 000647 0361 0E09 7 LD C,9 914 | 000649 0363 CD7DF3 17 CALL BDOS 915 | 00064C 0366 0E08 7 LD C,8 916 | 00064E 0368 CD7DF3 17 CALL BDOS 917 | 000651 036B AF 4 XOR A 918 | 000652 036C 24 4 INC H 919 | 000653 036D 18A8 12 JR RELOAD 920 | 921 | 036F ERROR: 922 | 000655 036F 0D0A496E73657274 DB 00DH,00AH,"Insert System disk$" 923 | 2053797374656D20 924 | 6469736B24 925 | 926 | 0384 MAIN_END: 927 | 00066A 076A ORG $$+0100H ;$DEPHASE 928 | 076A AT_DOS2RELOAD: 929 | 00066A 031A ORG DOS1RELOAD,AT_DOS2RELOAD-0100H 930 | 031A DOS2RELOAD: 931 | 00066A 031A 23 6 INC HL ;HLは"SHELL"のポインタ 932 | 00066B 031B 111FF4 10 LD DE,ALT_MEM 933 | 00066E 031E 0640 7 LD B,64 934 | 000670 0320 0E6B 7 LD C,06BH ;_GENV 環境変数の獲得 935 | 000672 0322 CD7DF3 17 CALL BDOS 936 | 000675 0325 111FF4 10 LD DE,ALT_MEM 937 | 000678 0328 AF 4 XOR A 938 | 000679 0329 0E43 7 LD C,043H ;_OPEN ファイルハンドルのオープン 939 | 00067B 032B CD7DF3 17 CALL BDOS 940 | 00067E 032E B7 4 OR A 941 | 00067F 032F 202D 12 JR NZ,SHOW_ERROR 942 | 000681 0331 C5 11 PUSH BC 943 | 000682 0332 110001 10 LD DE,00100H 944 | 000685 0335 2100BF 10 LD HL,0BF00H 945 | 000688 0338 0E48 7 LD C,48H ;_READ ファイルハンドルからの読み出し 946 | 00068A 033A CD7DF3 17 CALL BDOS 947 | 00068D 033D C1 10 POP BC 948 | 00068E 033E B7 4 OR A 949 | 00068F 033F 201D 12 JR NZ,SHOW_ERROR 950 | 000691 0341 E5 11 PUSH HL 951 | 000692 0342 0E45 7 LD C,45H ;_CLOSE ファイルハンドルのクローズ 952 | 000694 0344 CD7DF3 17 CALL BDOS 953 | 000697 0347 E1 10 POP HL 954 | 000698 0348 1803 12 JR READOK 955 | 034A DOS2RELOAD_: 956 | 00069A 079A ORG $$+0100H ;$DEPHASE 957 | [EOF:DOS.ASM:UTF_8] 958 | -------------------------------------------------------------------------------- /DOS.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/DOS.SYS -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Gaku 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # 似非DOS for MSX 2 | 3 | # 機能概略 4 | 5 | このソフトはMSXのDisk BASIC用のBDOSコール(0F37DH)を用いてMSX-DOSのBDOSコール(00005H)を代替し、MSX-DOS用のアプリケーションを動作させるOSです。 6 | 7 | 動作させるためには64KBのRAMとフロッピーディスクドライブを持つMSXかエミュレータが必要です。 8 | 9 | DOS2カーネルを持っているマシンで`dos2formsx.dsk`を使うとMSX-DOS2互換になります。 10 | 11 | ※また、DOS2カーネル使用時は`EXTBIO`が有効になっているのでマッパーRAMが使用可能です。 12 | 13 | コマンドシェルの似非COMMANDはMSX-DOS互換OSの[LSX-Dodgers](https://github.com/tablacus/LSX-Dodgers)をベースにして作成しました。 14 | 15 | 起動時にはAUTOEXECというコマンドを実行します。`AUTOEXEC.COM`や`AUTOEXEC.BAT`があればそのまま実行します。 16 | 17 | # エミュレータ用イメージファイル 18 | 19 | 以下のページの Assets からダウンロードできます。 20 | 21 | https://github.com/tablacus/dosformsx/releases 22 | 23 | # 内部コマンド 24 | 25 | https://github.com/tablacus/dosformsx/blob/main/COMMAND.TXT 26 | 27 | # 基本的なシステムコールの使い方のサンプル 28 | 29 | https://github.com/tablacus/LSX-Dodgers/wiki 30 | 31 | LSX-Dodgersのwikiに文字列を表示したり、ファイルを読み出したり、書き込んだり、削除したりするサンプルがあります。 32 | 33 | # WebMSX 34 | 35 | [WebMSX](https://webmsx.org/)で起動するリンクはこちら 36 | 37 | ## dosformsx.dsk(MSX1) 38 | https://webmsx.org/?MACHINE=MSX1J&DISKA=https://github.com/tablacus/dosformsx/raw/main/disk/dosformsx.dsk 39 | 40 | ## dosformsx.dsk(MSX2) 41 | https://webmsx.org/?MACHINE=MSX2J&DISKA=https://github.com/tablacus/dosformsx/raw/main/disk/dosformsx.dsk 42 | 43 | ## dos2formsx.dsk(MSXturboR) 44 | https://webmsx.org/?MACHINE=MSXTRJ&DISKA=https://github.com/tablacus/dosformsx/raw/main/disk/dos2formsx.dsk 45 | 46 | # 参考文献 47 | 48 | ASCAT編集部「MSXテクニカルガイドブック 第四版+ディスク編」 49 | 50 | この本が無ければ作成することはできなかったと思います。 51 | 52 | # ライセンス 53 | 54 | [MIT LICENSE](https://github.com/tablacus/dosformsx/blob/main/LICENSE) 55 | MIT License のオープンソースです。 56 | 57 | ※有料、無料にかかわらず同人ソフトに組み込んで配布してもらっても問題ありません。 58 | -------------------------------------------------------------------------------- /disk/dos2formsx.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/disk/dos2formsx.dsk -------------------------------------------------------------------------------- /disk/dosformsx.dsk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tablacus/dosformsx/443eecf4945a05c8d959774d6dbce6655c771fd8/disk/dosformsx.dsk --------------------------------------------------------------------------------