Rev 2039 | Details | Compare with Previous | Last modification | View Log
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1863 | alone | 1 | ;TODO %~dp0 (ࠩ ᪠) |
| 344 | alone | 2 | ;TODO %~t1 (-६ 1- ࠬ) |
| 3 | ;TODO goto ⪨ :label |
||
| 23 | dimkam | 4 | ;TODO if ???==??? goto |
| 28 | Alone | 5 | ;TODO for |
| 344 | alone | 6 | ;TODO PATH ( ࠭? 㦠 cmd) |
| 23 | dimkam | 7 | |
| 68 | Alone | 8 | DEVICE ZXSPECTRUM128 |
| 8 | dimkam | 9 | include "../_sdk/sys_h.asm" |
| 979 | alone | 10 | DEBUG=0 |
| 11 | |||
| 344 | alone | 12 | MAXCMDSZ=COMMANDLINE_sz-1;127 ; ନ |
| 1410 | alone | 13 | ;txtscrhgt=25 |
| 8 | dimkam | 14 | txtscrwid=80 |
| 28 | Alone | 15 | CMDLINEY=24 |
| 8 | dimkam | 16 | |
| 574 | alone | 17 | _COLOR=0x0007;7 |
| 18 | _ERRORCOLOR=0x0009;0x42 |
||
| 8 | dimkam | 19 | |
| 20 | org PROGSTART |
||
| 21 | cmd_begin |
||
| 573 | alone | 22 | ld sp,0x4000 ; ᪠ 0x3b00! OS |
| 23 | call initstdio |
||
| 24 | |||
| 545 | alone | 25 | OS_GETSTDINOUT ;e=stdin, d=stdout, h=stderr |
| 593 | alone | 26 | ld a,d |
| 546 | alone | 27 | ld (stdouthandle_wasatstart),a |
| 610 | alone | 28 | ld a,e |
| 29 | ld (stdinhandle_wasatstart),a |
||
| 545 | alone | 30 | |
| 8 | dimkam | 31 | OS_GETMAINPAGES |
| 344 | alone | 32 | ;dehl= ࠭ 0000,4000,8000,c000 |
| 8 | dimkam | 33 | push hl |
| 34 | OS_DELPAGE |
||
| 35 | pop hl |
||
| 36 | push hl |
||
| 37 | ld e,h |
||
| 38 | OS_DELPAGE |
||
| 39 | pop hl |
||
| 40 | ld e,l |
||
| 41 | OS_DELPAGE |
||
| 637 | alone | 42 | |
| 43 | ld hl,COMMANDLINE ;command line |
||
| 44 | push hl |
||
| 45 | ld de,params |
||
| 46 | call strcopy |
||
| 8 | dimkam | 47 | |
| 637 | alone | 48 | pop hl ;ld hl,COMMANDLINE ;command line |
| 8 | dimkam | 49 | ld de,wordbuf |
| 50 | call getword |
||
| 51 | call skipspaces |
||
| 547 | alone | 52 | ld (cmdlineword2),hl |
| 8 | dimkam | 53 | ld a,(hl) |
| 54 | or a |
||
| 55 | jr z,cmd_interactive |
||
| 56 | ;command line = "cmd <command to run>" |
||
| 57 | ld de,cmdbuf |
||
| 58 | call strcopy |
||
| 59 | |||
| 344 | alone | 60 | call makeprompt ; ࠢ쭮 ४ਨ |
| 8 | dimkam | 61 | |
| 548 | alone | 62 | call execcmd_maybepipes ;can show errors ;a!=0: no such internal command |
| 665 | alone | 63 | ;or a |
| 64 | ;call nz,callcmd;strcpexec_tryrun ;᪠ 䮭 |
||
| 344 | alone | 65 | YIELD ;⮡ 饭 ᯥ 墠 䮪 ;??? |
| 573 | alone | 66 | ; ப 뫠 autoexec.bat ࠬ, 砫 autoexec.bat, 室 ࠪ⨢ ० |
| 547 | alone | 67 | ld hl,tautoexecbat |
| 68 | cmdlineword2=$+1 |
||
| 69 | ld de,0 |
||
| 70 | call strcp ;z=yes |
||
| 8 | dimkam | 71 | jr z,cmd_interactive |
| 573 | alone | 72 | cmd_exit |
| 1196 | alone | 73 | lastresult=$+1 |
| 74 | ld hl,0 |
||
| 8 | dimkam | 75 | QUIT |
| 76 | |||
| 547 | alone | 77 | tautoexecbat |
| 78 | db "autoexec.bat",0 |
||
| 1674 | dimkam | 79 | |
| 80 | version_text |
||
| 81 | defb "Command line interpreter. rev.",0 |
||
| 82 | |||
| 8 | dimkam | 83 | cmd_interactive |
| 1751 | kulich | 84 | ld hl,version_text |
| 1674 | dimkam | 85 | call prtext |
| 1751 | kulich | 86 | ifdef SVNREVISION |
| 2316 | kulich | 87 | ld de,((SVNREVISION+1) >> 16) & 0xffff |
| 88 | ld hl,(SVNREVISION+1) & 0xffff |
||
| 89 | call prdword_dehl |
||
| 90 | call prcrlf |
||
| 1674 | dimkam | 91 | endif |
| 8 | dimkam | 92 | cmdmainloop |
| 979 | alone | 93 | if DEBUG |
| 94 | call printcurdir |
||
| 95 | endif |
||
| 8 | dimkam | 96 | call makeprompt |
| 97 | call editcmd |
||
| 98 | call prcrlf |
||
| 99 | |||
| 100 | ld hl,cmdbuf |
||
| 101 | ld de,oldcmd |
||
| 102 | ld bc,MAXCMDSZ+1 |
||
| 103 | ldir |
||
| 548 | alone | 104 | |
| 105 | call execcmd_maybepipes |
||
| 613 | alone | 106 | ;or a |
| 107 | ;call nz,callcmd;strcpexec_tryrun ;᪠ 䮭 |
||
| 851 | alone | 108 | xor a |
| 109 | ld (cmdbuf),a |
||
| 110 | ld (curcmdscroll),a |
||
| 548 | alone | 111 | jp cmdmainloop |
| 112 | |||
| 113 | execcmd_maybepipes |
||
| 559 | alone | 114 | ;out:a!=0: no such internal command |
| 546 | alone | 115 | ; command pars >file, create file, ७ࠢ 뢮 , execcmd, close file, ७ࠢ 뢮 ⭮ |
| 116 | ld hl,cmdbuf |
||
| 593 | alone | 117 | ld a,'|' |
| 118 | ld bc,MAXCMDSZ |
||
| 631 | alone | 119 | cpir |
| 1812 | alone | 120 | jp z,execcmd_pipe |
| 593 | alone | 121 | |
| 122 | ld hl,cmdbuf |
||
| 610 | alone | 123 | ld a,'<' |
| 124 | ld bc,MAXCMDSZ |
||
| 631 | alone | 125 | cpir |
| 610 | alone | 126 | jr z,execcmd_changestdin ;jr nz,cmd_noexeccmdtofile |
| 127 | |||
| 128 | ld hl,cmdbuf |
||
| 546 | alone | 129 | ld a,'>' |
| 130 | ld bc,MAXCMDSZ |
||
| 631 | alone | 131 | cpir |
| 680 | alone | 132 | jp nz,callcmd ;exec or run ;execcmd_or_runprog ;jr nz,cmd_noexeccmdtofile |
| 1812 | alone | 133 | cp (hl) |
| 134 | jr nz,redirect_noadd |
||
| 135 | ld (hl),' ' |
||
| 136 | xor a |
||
| 137 | redirect_noadd |
||
| 138 | ld (redirect_mode),a |
||
| 610 | alone | 139 | ;change stdout |
| 546 | alone | 140 | dec hl |
| 141 | ld (hl),0 |
||
| 142 | inc hl |
||
| 610 | alone | 143 | call skipspaces |
| 546 | alone | 144 | ex de,hl ;de=filename |
| 1812 | alone | 145 | redirect_mode=$+1 |
| 146 | ld a,0 ;0=open, else create |
||
| 147 | or a |
||
| 148 | jr nz,redirect_create |
||
| 149 | push de |
||
| 150 | OS_OPENHANDLE |
||
| 151 | pop de |
||
| 152 | or a |
||
| 153 | jr nz,redirect_create |
||
| 154 | push bc |
||
| 155 | OS_GETFILESIZE |
||
| 156 | pop bc |
||
| 157 | push bc |
||
| 158 | OS_SEEKHANDLE ;b=file handle, dehl=offset |
||
| 159 | pop bc |
||
| 160 | jr redirect_openq |
||
| 161 | redirect_create |
||
| 546 | alone | 162 | OS_CREATEHANDLE |
| 1812 | alone | 163 | redirect_openq |
| 546 | alone | 164 | ld a,b |
| 165 | ld (execcmdtofile_handle),a |
||
| 573 | alone | 166 | call setstdouthandle |
| 610 | alone | 167 | ;changestdin_stdout_execcmd |
| 680 | alone | 168 | ;call execcmd ;can show errors ;a!=0: no such internal command |
| 169 | ; or a |
||
| 170 | ; call nz,callcmd |
||
| 171 | call callcmd ;exec or run |
||
| 613 | alone | 172 | ;push af |
| 612 | alone | 173 | ; 믮 饬 ० 諠 |
| 546 | alone | 174 | execcmdtofile_handle=$+1 |
| 175 | ld b,0 |
||
| 613 | alone | 176 | OS_CLOSEHANDLE ;뫨 室 䠩 |
| 546 | alone | 177 | stdouthandle_wasatstart=$+1 |
| 178 | ld a,0 |
||
| 573 | alone | 179 | call setstdouthandle |
| 610 | alone | 180 | ;stdinhandle_wasatstart=$+1 |
| 181 | ; ld a,0 |
||
| 182 | ; call setstdinhandle |
||
| 546 | alone | 183 | |
| 613 | alone | 184 | ;pop af |
| 185 | ret |
||
| 186 | ;jr cmd_noexeccmdtofileq |
||
| 559 | alone | 187 | ;cmd_noexeccmdtofile |
| 188 | ; jp execcmd ;a!=0: no such internal command |
||
| 189 | ;cmd_noexeccmdtofileq |
||
| 190 | ; ret |
||
| 8 | dimkam | 191 | |
| 610 | alone | 192 | execcmd_changestdin |
| 193 | dec hl |
||
| 194 | ld (hl),0 |
||
| 195 | inc hl |
||
| 196 | call skipspaces |
||
| 197 | ex de,hl ;de=filename |
||
| 198 | OS_OPENHANDLE |
||
| 199 | ld a,b |
||
| 613 | alone | 200 | ;ld (execcmdtofile_changestdin_handle),a |
| 610 | alone | 201 | call setstdinhandle |
| 613 | alone | 202 | call setstdinout |
| 610 | alone | 203 | ;jr changestdin_stdout_execcmd |
| 680 | alone | 204 | ;call execcmd ;can show errors ;a!=0: no such internal command |
| 205 | ; or a |
||
| 206 | ; call nz,callcmd |
||
| 207 | call callcmd ;exec or run |
||
| 613 | alone | 208 | ;push af |
| 209 | ; 믮 饬 ० 諠 ( ⨫ ணࠬ 䮭) |
||
| 610 | alone | 210 | |
| 613 | alone | 211 | ;execcmdtofile_changestdin_handle=$+1 |
| 212 | ; ld b,0 |
||
| 213 | ; OS_CLOSEHANDLE ;뫨 室 䠩 ணࠬ |
||
| 610 | alone | 214 | ;stdouthandle_wasatstart=$+1 |
| 215 | ; ld a,0 |
||
| 216 | ; call setstdouthandle |
||
| 217 | stdinhandle_wasatstart=$+1 |
||
| 218 | ld a,0 |
||
| 219 | call setstdinhandle |
||
| 613 | alone | 220 | call setstdinout |
| 610 | alone | 221 | |
| 613 | alone | 222 | ;pop af |
| 223 | ret |
||
| 224 | ;jr cmd_noexeccmdtofileq |
||
| 610 | alone | 225 | |
| 593 | alone | 226 | execcmd_pipe |
| 227 | ;cmd |app |
||
| 228 | dec hl |
||
| 229 | ld (hl),0 |
||
| 230 | inc hl |
||
| 610 | alone | 231 | call skipspaces |
| 1845 | alone | 232 | ;hl=right app filename |
| 233 | ld (rightapp_filename),hl |
||
| 234 | push hl |
||
| 235 | call skipword |
||
| 236 | ld (rightapp_filename_end),hl |
||
| 237 | ld a,(hl) |
||
| 238 | ld (rightapp_filename_endchar),a |
||
| 239 | ld (hl),0 |
||
| 240 | pop hl |
||
| 241 | |||
| 242 | ex de,hl ;de=right app filename |
||
| 593 | alone | 243 | |
| 244 | OS_OPENHANDLE |
||
| 245 | or a |
||
| 246 | jr nz,execcmd_pipe_error |
||
| 247 | |||
| 1845 | alone | 248 | push bc ;b=right app file handle |
| 593 | alone | 249 | ld de,tpipename |
| 250 | OS_CREATEHANDLE |
||
| 251 | ld a,b |
||
| 252 | ld (pipehandle),a |
||
| 253 | call setstdouthandle |
||
| 1845 | alone | 254 | pop bc ;b=right app file handle |
| 593 | alone | 255 | |
| 1845 | alone | 256 | call readapp ;out: dehl= ࠭ 0000,4000,8000,c000 ਫ, b=id, a=error ; CLOSE ;TODO १ loadapp, ⮡ 뢠 .com 㧨 /bin |
| 257 | push bc ;b=id |
||
| 258 | ;dehl= ࠭ 0000,4000,8000,c000 ਫ, b=id, a=error |
||
| 259 | ld a,d |
||
| 260 | SETPGC000 |
||
| 261 | rightapp_filename_end=$+1 |
||
| 262 | ld hl,0 |
||
| 263 | rightapp_filename_endchar=$+1 |
||
| 264 | ld (hl),0 |
||
| 265 | rightapp_filename=$+1 |
||
| 266 | ld hl,0 |
||
| 267 | ld de,0xc000+COMMANDLINE |
||
| 268 | ld bc,COMMANDLINE_sz |
||
| 269 | ldir ;command line |
||
| 270 | pop bc ;b=id |
||
| 271 | push bc |
||
| 593 | alone | 272 | pipehandle=$+1 |
| 1845 | alone | 273 | ld e,0 ;stdin for right app |
| 274 | ld a,(stdouthandle_wasatstart) |
||
| 275 | ld d,a ;stdout for right app |
||
| 593 | alone | 276 | ld h,0xff ;rnd |
| 277 | ;b=id, e=stdin, d=stdout, h=stderr |
||
| 278 | OS_SETSTDINOUT |
||
| 279 | pop af ;id |
||
| 1845 | alone | 280 | ld e,a ;e=id |
| 593 | alone | 281 | ;ld (waitpid_id),a |
| 1845 | alone | 282 | push de ;e=id |
| 593 | alone | 283 | OS_RUNAPP |
| 284 | |||
| 680 | alone | 285 | ;call execcmd ;can show errors ;a!=0: no such internal command |
| 286 | ; or a |
||
| 287 | ; call nz,callcmd |
||
| 288 | call callcmd ;exec or run |
||
| 1845 | alone | 289 | pop de ;e=id |
| 613 | alone | 290 | ;push af ;a=error |
| 1845 | alone | 291 | push de ;e=id |
| 593 | alone | 292 | ld a,(pipehandle) |
| 293 | ld b,a |
||
| 613 | alone | 294 | OS_CLOSEHANDLE ;뫨 筨 |
| 1845 | alone | 295 | pop de ;e=id |
| 1863 | alone | 296 | ;call waitpid_keepresult |
| 1301 | alone | 297 | ;WAITPID ;hl=result |
| 298 | ;ld (lastresult),hl |
||
| 299 | ;call prword_hl_crlf |
||
| 593 | alone | 300 | |
| 301 | ld a,(stdouthandle_wasatstart) |
||
| 302 | call setstdouthandle |
||
| 613 | alone | 303 | ; 室 䠩 ࠢ ணࠬ |
| 304 | ;ld a,(pipehandle) |
||
| 305 | ;ld b,a |
||
| 306 | ;OS_CLOSEHANDLE |
||
| 593 | alone | 307 | |
| 613 | alone | 308 | ;pop af ;a=error |
| 593 | alone | 309 | execcmd_pipe_error |
| 310 | ret |
||
| 311 | |||
| 312 | tpipename |
||
| 313 | db "z:",0 |
||
| 314 | |||
| 8 | dimkam | 315 | ;;;;;;;;;;;;;;;;;; |
| 316 | |||
| 9 | dimkam | 317 | editcmd_up |
| 851 | alone | 318 | xor a |
| 319 | ld (curcmdscroll),a |
||
| 9 | dimkam | 320 | ld de,cmdbuf |
| 321 | ld hl,oldcmd |
||
| 322 | ld bc,MAXCMDSZ+1 |
||
| 323 | ldir |
||
| 324 | ;jp editcmd |
||
| 325 | |||
| 8 | dimkam | 326 | editcmd |
| 327 | ld hl,cmdbuf |
||
| 328 | call strlen |
||
| 329 | ld a,l |
||
| 330 | ld (curcmdx),a |
||
| 331 | editcmd0 |
||
| 332 | call fixscroll_prcmd |
||
| 333 | call cmdcalccurxy |
||
| 588 | alone | 334 | SETX_;SETXY_ |
| 574 | alone | 335 | ;ld e,CURSORCOLOR;0x38 |
| 336 | ;OS_PRATTR ;ᮢ |
||
| 545 | alone | 337 | call yieldgetkeyloop ;YIELDGETKEYLOOP |
| 1863 | alone | 338 | ;push af |
| 339 | ;ld a,r |
||
| 340 | ;out (0xfe),a |
||
| 341 | ;pop af |
||
| 9 | dimkam | 342 | ;ld a,c ;keynolang |
| 574 | alone | 343 | ;push af |
| 344 | ;call cmdcalccurxy |
||
| 345 | ;SETXY_ |
||
| 346 | ;ld e,COLOR;7 |
||
| 347 | ;OS_PRATTR ; |
||
| 348 | ;pop af |
||
| 116 | alone | 349 | cp key_enter |
| 8 | dimkam | 350 | ret z |
| 116 | alone | 351 | cp key_up |
| 9 | dimkam | 352 | jr z,editcmd_up |
| 353 | ld hl,editcmd0 |
||
| 354 | push hl |
||
| 355 | ;ld hl,cmdbuf |
||
| 116 | alone | 356 | cp key_backspace |
| 8 | dimkam | 357 | jr z,editcmd_backspace |
| 116 | alone | 358 | cp key_left |
| 8 | dimkam | 359 | jr z,editcmd_left |
| 116 | alone | 360 | cp key_right |
| 8 | dimkam | 361 | jr z,editcmd_right |
| 588 | alone | 362 | cp key_home |
| 363 | jr z,editcmd_home |
||
| 364 | cp key_end |
||
| 365 | jr z,editcmd_end |
||
| 366 | cp key_del |
||
| 367 | jr z,editcmd_del |
||
| 116 | alone | 368 | cp 0x20 |
| 344 | alone | 369 | ret c ;jr c,editcmdok ;稥 ⥬ 㦭 |
| 8 | dimkam | 370 | ;type in |
| 9 | dimkam | 371 | editcmdtypein |
| 8 | dimkam | 372 | ld e,a |
| 373 | ld hl,cmdbuf |
||
| 374 | call strlen ;hl=length |
||
| 375 | ld bc,MAXCMDSZ |
||
| 376 | or a |
||
| 377 | sbc hl,bc |
||
| 344 | alone | 378 | ret nc ;jr nc,editcmdok ;㤠 |
| 8 | dimkam | 379 | call cmdcalctextaddr ;hl=addr, a=curcmdx |
| 380 | inc a |
||
| 381 | ld (curcmdx),a |
||
| 9 | dimkam | 382 | jp strinsch ;e=ch |
| 8 | dimkam | 383 | |
| 384 | editcmd_backspace |
||
| 385 | call cmdcalctextaddr ;hl=addr, a=curcmdx |
||
| 386 | or a |
||
| 344 | alone | 387 | ret z ;jr z,editcmdok ;祣 㤠 |
| 8 | dimkam | 388 | dec a |
| 389 | ld (curcmdx),a |
||
| 344 | alone | 390 | jp strdelch ;㤠 ।騩 ᨬ |
| 8 | dimkam | 391 | |
| 588 | alone | 392 | editcmd_del |
| 393 | call cmdcalctextaddr ;hl=addr, a=curcmdx |
||
| 394 | inc hl |
||
| 395 | jp strdelch ;㤠 ।騩 ᨬ |
||
| 396 | |||
| 8 | dimkam | 397 | editcmd_left |
| 398 | ld a,(curcmdx) |
||
| 399 | or a |
||
| 344 | alone | 400 | ret z ;jr z,editcmdok ;㤠 |
| 8 | dimkam | 401 | dec a |
| 588 | alone | 402 | editcmd_leftq |
| 8 | dimkam | 403 | ld (curcmdx),a |
| 573 | alone | 404 | ret |
| 588 | alone | 405 | editcmd_home |
| 406 | xor a |
||
| 407 | jr editcmd_leftq |
||
| 408 | editcmd_end |
||
| 409 | ld hl,cmdbuf |
||
| 410 | call strlen ;hl=length |
||
| 411 | ld a,l |
||
| 412 | jr editcmd_leftq |
||
| 413 | |||
| 8 | dimkam | 414 | editcmd_right |
| 415 | call cmdcalctextaddr ;hl=addr, a=curcmdx |
||
| 416 | inc (hl) |
||
| 417 | dec (hl) |
||
| 344 | alone | 418 | ret z ;jr z,editcmdok ;㤠 ࠢ, ⮨ ନ |
| 8 | dimkam | 419 | inc a |
| 420 | ld (curcmdx),a |
||
| 573 | alone | 421 | ret |
| 8 | dimkam | 422 | |
| 423 | getword |
||
| 424 | ;hl=string |
||
| 425 | ;de=wordbuf |
||
| 426 | ;out: hl=terminator/space addr |
||
| 427 | getword0 |
||
| 428 | ld a,(hl) |
||
| 429 | or a |
||
| 430 | jr z,getwordq |
||
| 431 | sub ' ' |
||
| 432 | jr z,getwordq |
||
| 433 | ldi |
||
| 434 | jp getword0 |
||
| 435 | getwordq |
||
| 436 | ;xor a |
||
| 437 | ld (de),a |
||
| 438 | ret |
||
| 439 | |||
| 440 | execcmd |
||
| 441 | ;a=0: command executed |
||
| 442 | ;a!=0: no such internal command |
||
| 443 | ld hl,cmdbuf |
||
| 444 | ld a,(hl) |
||
| 445 | or a |
||
| 446 | ret z |
||
| 289 | dimkam | 447 | ;display $ |
| 637 | alone | 448 | ;display wordbuf |
| 8 | dimkam | 449 | ld de,wordbuf |
| 450 | call getword ;hl=terminator/space addr |
||
| 451 | call skipspaces |
||
| 452 | ld (execcmd_pars),hl |
||
| 122 | alone | 453 | inc hl |
| 454 | ld a,(wordbuf+1) |
||
| 455 | cp ':' |
||
| 637 | alone | 456 | jp nz,execcmd0 |
| 457 | ld a,(wordbuf+2) |
||
| 458 | or a |
||
| 122 | alone | 459 | jp z,cmd_t0 |
| 637 | alone | 460 | execcmd0 |
| 8 | dimkam | 461 | ld hl,commandslist ;list of internal commands |
| 462 | strcpexec0 |
||
| 463 | ld c,(hl) |
||
| 464 | inc hl |
||
| 465 | ld b,(hl) |
||
| 466 | inc hl |
||
| 467 | ld a,b |
||
| 468 | cp -1 |
||
| 469 | ret z ;jr z,strcpexec_tryrun ;a!=0: no such internal command |
||
| 470 | ld de,wordbuf |
||
| 471 | push hl |
||
| 472 | call strcp |
||
| 473 | pop hl |
||
| 474 | jr nz,strcpexec_fail |
||
| 475 | ld h,b |
||
| 476 | ld l,c |
||
| 477 | call jphl ;execute command |
||
| 478 | xor a |
||
| 479 | ret ;a=0: command executed |
||
| 480 | jphl |
||
| 481 | jp (hl) ;run internal command |
||
| 482 | strcpexec_fail |
||
| 344 | alone | 483 | ld b,-1 ;⮡ 筮 ନ |
| 8 | dimkam | 484 | xor a |
| 631 | alone | 485 | cpir ; 易⥫쭮 |
| 8 | dimkam | 486 | jr strcpexec0 |
| 487 | |||
| 488 | cmd_start |
||
| 344 | alone | 489 | ;믮 ப 䮭 (㦭 .bat) |
| 8 | dimkam | 490 | ld hl,cmdbuf |
| 491 | ld a,(hl) |
||
| 492 | or a |
||
| 493 | ret z |
||
| 494 | ld de,wordbuf |
||
| 495 | call getword ;hl=terminator/space addr |
||
| 496 | call skipspaces |
||
| 497 | ld de,cmdbuf |
||
| 498 | ld bc,MAXCMDSZ+1 |
||
| 499 | ldir |
||
| 598 | alone | 500 | call strcpexec_tryrun ;믮 䠩 cmdbuf SYSDIR/cmdbuf ࠬࠬ ⠬, e=id, nz=error, cy=end of .bat |
| 565 | alone | 501 | ret z |
| 502 | execcmd_error |
||
| 503 | ld hl,tunknowncommand |
||
| 504 | jp cmderror |
||
| 505 | |||
| 8 | dimkam | 506 | strcpexec_tryrun |
| 598 | alone | 507 | ;믮 䠩 cmdbuf SYSDIR/cmdbuf ࠬࠬ ⠬, e=id, nz=error, cy=end of .bat |
| 565 | alone | 508 | call loadapp ;㧨 䠩 cmdbuf, e=id, nz=error, cy=end of .bat |
| 598 | alone | 509 | ret c ;cy=end of .bat |
| 66 | Alone | 510 | jr nz,execcmd_tryrunerror |
| 511 | execcmd_tryrunok |
||
| 8 | dimkam | 512 | ret c ;cy=end of .bat |
| 1805 | kulich | 513 | if 1==1 |
| 514 | push de |
||
| 515 | ld b,e ;id |
||
| 516 | ld a,(stdinhandle) |
||
| 517 | ld e,a |
||
| 518 | ld a,(stdouthandle) |
||
| 519 | ld d,a |
||
| 520 | ld h,0xff ;rnd |
||
| 521 | ;b=id, e=stdin, d=stdout, h=stderr |
||
| 522 | OS_SETSTDINOUT |
||
| 523 | pop de |
||
| 524 | endif |
||
| 525 | push de |
||
| 565 | alone | 526 | OS_RUNAPP ;e=id |
| 527 | pop de |
||
| 528 | xor a ;z |
||
| 8 | dimkam | 529 | ret |
| 530 | |||
| 66 | Alone | 531 | execcmd_tryrunerror |
| 979 | alone | 532 | ;믮 䠩 SYSDIR/cmdbuf ࠬࠬ ⠬ (१ loadapp) |
| 236 | alone | 533 | call loadapp_keeppath |
| 66 | Alone | 534 | OS_SETSYSDRV |
| 535 | ld de,sysdir |
||
| 536 | push de |
||
| 537 | OS_GETPATH |
||
| 344 | alone | 538 | call loadapp_setoldpath ;TODO prompt |
| 565 | alone | 539 | ;OS_SETSYSDRV |
| 540 | ;ld de,wordbuf2 |
||
| 541 | ;OS_GETPATH |
||
| 68 | Alone | 542 | ;ld de,cmdprompt |
| 543 | ;OS_CHDIR |
||
| 544 | ;call makeprompt |
||
| 545 | ;ld de,cmdprompt |
||
| 546 | ;OS_CHDIR |
||
| 66 | Alone | 547 | pop hl |
| 548 | push hl |
||
| 344 | alone | 549 | ; , : |
| 550 | ;ld bc,0 ;⮡ 筮 ନ |
||
| 66 | Alone | 551 | xor a |
| 68 | Alone | 552 | ld b,a |
| 553 | ld c,a;0 |
||
| 631 | alone | 554 | cpir ; 易⥫쭮, =0, bc=-1 .. |
| 344 | alone | 555 | dec hl ; ନ |
| 556 | dec hl ;। ନ |
||
| 66 | Alone | 557 | ld a,'/' |
| 558 | cp (hl) |
||
| 559 | jr z,$+2+5 |
||
| 560 | inc hl |
||
| 561 | ld (hl),a |
||
| 562 | inc hl |
||
| 563 | ld (hl),0 |
||
| 564 | pop hl ;sysdir |
||
| 565 | call strlen |
||
| 566 | ld b,h |
||
| 567 | ld c,l ;bc=SYSDIR_size |
||
| 568 | push bc ;SYSDIR_size |
||
| 569 | ld hl,MAXCMDSZ+1 |
||
| 570 | or a |
||
| 571 | sbc hl,bc |
||
| 572 | push hl ;MAXCMDSZ+1-SYSDIR_size |
||
| 573 | ;bc=SYSDIR_size |
||
| 574 | ld hl,cmdbuf+MAXCMDSZ;+1 |
||
| 575 | or a |
||
| 576 | sbc hl,bc |
||
| 577 | ld de,cmdbuf+MAXCMDSZ;+1 |
||
| 578 | pop bc ;MAXCMDSZ+1-SYSDIR_size |
||
| 579 | lddr |
||
| 580 | ld hl,sysdir |
||
| 581 | ld de,cmdbuf |
||
| 582 | pop bc ;SYSDIR_size |
||
| 344 | alone | 583 | ldir ; strcopy, .. 㦥 ନ |
| 565 | alone | 584 | ;ld hl,sysdir |
| 585 | ;ld de,oldpath |
||
| 586 | ;ld bc,MAXPATH_sz;MAXCMDSZ+1 |
||
| 587 | ;ldir ;TODO ४ᨢ ( .bat) |
||
| 588 | ;jr $ |
||
| 589 | call loadapp ;㧨 䠩 cmdbuf, e=id, nz=error, cy=end of .bat |
||
| 66 | Alone | 590 | jr z,execcmd_tryrunok |
| 565 | alone | 591 | ret ;nz=error |
| 8 | dimkam | 592 | |
| 680 | alone | 593 | openparams |
| 594 | ;open %0 (progname), %1... |
||
| 637 | alone | 595 | ld hl,cmdbuf |
| 596 | call strlen |
||
| 597 | ld b,h |
||
| 598 | ld c,l ;bc=len (without terminator) |
||
| 599 | ld hl,cmdbuf |
||
| 600 | add hl,bc ;at terminator |
||
| 601 | ld de,cmdbuf+MAXCMDSZ ;at last byte of buffer |
||
| 602 | inc bc ;bc=len (with terminator) |
||
| 603 | lddr |
||
| 604 | ex de,hl |
||
| 605 | inc hl |
||
| 606 | ld de,cmdbuf |
||
| 607 | chgparams0 |
||
| 608 | ld a,(hl) |
||
| 609 | ld (de),a |
||
| 610 | or a |
||
| 611 | jr z,chgparams0q |
||
| 612 | inc hl |
||
| 613 | cp '%' |
||
| 614 | jr nz,chgparams0skip |
||
| 615 | ld a,(hl) |
||
| 616 | ld (de),a |
||
| 617 | or a |
||
| 618 | jr z,chgparams0q |
||
| 619 | inc hl |
||
| 620 | sub '0' ;a=param |
||
| 621 | cp 10 |
||
| 622 | jr nc,chgparams0skip ;%% |
||
| 623 | push hl |
||
| 624 | ld hl,params |
||
| 625 | inc a |
||
| 626 | ld b,a |
||
| 627 | chgparams1 |
||
| 628 | call skipword ;doesn't move at terminator |
||
| 629 | call skipspaces ;doesn't move at terminator |
||
| 630 | djnz chgparams1 |
||
| 631 | ;hl=param text (end=space or terminator) |
||
| 632 | chgparams2 |
||
| 633 | ld a,(hl) |
||
| 634 | or a |
||
| 635 | jr z,chgparams2q |
||
| 636 | cp ' ' |
||
| 637 | jr z,chgparams2q |
||
| 638 | ld (de),a |
||
| 639 | inc hl |
||
| 640 | inc de |
||
| 641 | djnz chgparams2 |
||
| 642 | chgparams2q |
||
| 643 | pop hl |
||
| 644 | dec de |
||
| 645 | chgparams0skip |
||
| 646 | inc de |
||
| 647 | jr chgparams0 |
||
| 648 | chgparams0q |
||
| 680 | alone | 649 | ret |
| 637 | alone | 650 | |
| 680 | alone | 651 | ;execcmd_or_runprog |
| 652 | ; call execcmd |
||
| 653 | ; or a |
||
| 654 | ; ret z |
||
| 655 | ; jp callcmd;strcpexec_tryrun ;᪠ 䮭 |
||
| 656 | |||
| 657 | callcmd |
||
| 658 | ;call command (cmdbuf) with waiting |
||
| 8 | dimkam | 659 | call execcmd ;a!=0: no such internal command |
| 660 | or a |
||
| 661 | ret z ;command executed |
||
| 565 | alone | 662 | ;call loadapp ;㧨 䠩 cmdbuf, e=id |
| 598 | alone | 663 | call strcpexec_tryrun ;㧨 䠩 cmdbuf SYSDIR/cmdbuf, e=id, nz=error, CY=end of .bat |
| 664 | ret c |
||
| 637 | alone | 665 | jp nz,execcmd_error |
| 565 | alone | 666 | ;push de |
| 667 | ;OS_RUNAPP |
||
| 668 | ;pop de |
||
| 1301 | alone | 669 | waitpid_keepresult |
| 598 | alone | 670 | WAITPID ; , 뫠 .bat! |
| 1196 | alone | 671 | ld (lastresult),hl |
| 875 | alone | 672 | ;hl=result |
| 1570 | alone | 673 | ret |
| 674 | ;jp prword_hl_crlf |
||
| 8 | dimkam | 675 | |
| 66 | Alone | 676 | loadapp_keeppath |
| 677 | ld hl,cmdprompt |
||
| 678 | ld de,oldpath |
||
| 679 | ld bc,MAXPATH_sz;MAXCMDSZ+1 |
||
| 344 | alone | 680 | ldir ;TODO ४ᨢ ( .bat) |
| 66 | Alone | 681 | ret |
| 682 | |||
| 8 | dimkam | 683 | loadapp_setoldpath |
| 684 | push de |
||
| 344 | alone | 685 | ld de,oldpath ;TODO ४ᨢ ( .bat) |
| 8 | dimkam | 686 | OS_CHDIR |
| 687 | pop de |
||
| 688 | xor a |
||
| 689 | ret ;Z |
||
| 690 | |||
| 691 | loadapp |
||
| 692 | ;out: nz=error, cy=end of .bat, or else e=id |
||
| 693 | ld hl,cmdbuf |
||
| 694 | ld de,wordbuf |
||
| 2039 | alone | 695 | push de |
| 8 | dimkam | 696 | call getword |
| 344 | alone | 697 | ; (TODO ᯮ짮 OS_OPENHANDLE) |
| 2039 | alone | 698 | pop hl ;ld hl,wordbuf |
| 8 | dimkam | 699 | push hl |
| 700 | call findlastslash. ;de=after last slash or beginning of path |
||
| 701 | pop hl |
||
| 702 | |||
| 236 | alone | 703 | ;push hl |
| 344 | alone | 704 | ;饬 , 塞, ⮨ .com .bat |
| 221 | alone | 705 | loadapp_finddot0 |
| 706 | ld a,(hl) |
||
| 707 | or a |
||
| 708 | jr z,loadapp_nodot |
||
| 709 | cp '.' |
||
| 710 | inc hl |
||
| 711 | jr nz,loadapp_finddot0 |
||
| 344 | alone | 712 | ;塞, ⮨ .com .bat |
| 1729 | kulich | 713 | ld (exthlpointer),hl |
| 221 | alone | 714 | ld a,(hl) |
| 715 | or 0x20 |
||
| 716 | cp 'b' |
||
| 344 | alone | 717 | ; TODO ઠ ⠫ 㪢? |
| 593 | alone | 718 | jp z,strcpexec_tryrun_bat |
| 344 | alone | 719 | ;⠥, ᠭ .com ( ਭ樯 ७ ࠧ筮 - ᪠) |
| 1729 | kulich | 720 | jr loadapp_finddotok1 |
| 2039 | alone | 721 | |
| 221 | alone | 722 | loadapp_nodot |
| 2039 | alone | 723 | ;TODO ᭠砫 bat, ⮬ com? |
| 221 | alone | 724 | ;a=0 |
| 225 | alone | 725 | ld (hl),'.' |
| 726 | inc hl |
||
| 1729 | kulich | 727 | ld (exthlpointer),hl |
| 221 | alone | 728 | ld (hl),'c' |
| 729 | inc hl |
||
| 730 | ld (hl),'o' |
||
| 731 | inc hl |
||
| 732 | ld (hl),'m' |
||
| 733 | inc hl |
||
| 734 | ld (hl),a ;0 |
||
| 735 | loadapp_finddotok |
||
| 1729 | kulich | 736 | call open_file_exec |
| 737 | jp z,fileopenok |
||
| 738 | ld hl,(exthlpointer) |
||
| 739 | ld (hl),'b' |
||
| 740 | inc hl |
||
| 741 | ld (hl),'a' |
||
| 742 | inc hl |
||
| 743 | ld (hl),'t' |
||
| 744 | inc hl |
||
| 745 | xor a |
||
| 746 | ld (hl),a ;0 |
||
| 747 | ;ret nz ;jr nz,execcmd_error ;NC! |
||
| 748 | jp strcpexec_tryrun_bat |
||
| 749 | |||
| 750 | loadapp_finddotok1 |
||
| 751 | call open_file_exec |
||
| 1728 | kulich | 752 | ret nz ;jr nz,execcmd_error ;NC! |
| 1729 | kulich | 753 | fileopenok |
| 344 | alone | 754 | OS_NEWAPP ; ᮧ 祭 ⥪ ४!!! |
| 221 | alone | 755 | or a |
| 598 | alone | 756 | ret nz ;error ;NC! |
| 344 | alone | 757 | ;dehl= ࠭ 0000,4000,8000,c000 ਫ, b=id, a=error |
| 221 | alone | 758 | push bc ;b=id |
| 759 | ld a,d |
||
| 1410 | alone | 760 | SETPGC000 |
| 221 | alone | 761 | push de |
| 762 | push hl |
||
| 763 | ld hl,cmdbuf |
||
| 764 | ld de,0xc000+COMMANDLINE |
||
| 765 | ld bc,COMMANDLINE_sz |
||
| 766 | ldir ;command line |
||
| 767 | pop hl |
||
| 768 | pop de |
||
| 769 | call readfile_pages_dehl |
||
| 770 | |||
| 771 | ld a,(curhandle) |
||
| 236 | alone | 772 | ld b,a |
| 221 | alone | 773 | OS_CLOSEHANDLE |
| 774 | pop de |
||
| 775 | ld e,d ;e=id |
||
| 776 | xor a |
||
| 777 | ret ;Z |
||
| 1729 | kulich | 778 | open_file_exec |
| 779 | ld de,wordbuf ;pop de |
||
| 780 | OS_OPENHANDLE |
||
| 781 | or a |
||
| 782 | push af |
||
| 783 | ld a,b |
||
| 784 | ld (curhandle),a |
||
| 785 | ;call loadapp_setoldpath |
||
| 786 | if DEBUG |
||
| 787 | call printcurdir |
||
| 788 | ;call yieldgetkeyloop |
||
| 789 | endif |
||
| 790 | pop af |
||
| 791 | ret |
||
| 792 | exthlpointer |
||
| 793 | dw 0000 |
||
| 2039 | alone | 794 | ;dw 0000 |
| 1729 | kulich | 795 | |
| 593 | alone | 796 | readapp |
| 797 | ld a,b |
||
| 798 | ld (curhandle),a |
||
| 221 | alone | 799 | |
| 593 | alone | 800 | OS_NEWAPP ; ࢮ ᮧ ᮧ 祭 |
| 801 | ;dehl= ࠭ 0000,4000,8000,c000 ਫ, b=id, a=error |
||
| 802 | push bc ;b=id |
||
| 803 | |||
| 804 | ld a,d |
||
| 1410 | alone | 805 | SETPGC000 |
| 593 | alone | 806 | push de |
| 807 | push hl |
||
| 808 | ld hl,COMMANDLINE ;command line |
||
| 809 | call skipword |
||
| 810 | call skipspaces ;ய⨫ ࢮ (⠬ 뫮 term.com, , ਬ, cmd.com autoexec.bat) |
||
| 811 | ld de,0xc080 |
||
| 812 | ld bc,128 |
||
| 813 | ldir ;command line |
||
| 814 | pop hl |
||
| 815 | pop de |
||
| 816 | |||
| 1845 | alone | 817 | push de |
| 818 | push hl |
||
| 593 | alone | 819 | call readfile_pages_dehl |
| 1845 | alone | 820 | push af |
| 593 | alone | 821 | ld a,(curhandle) |
| 822 | ld b,a |
||
| 823 | OS_CLOSEHANDLE |
||
| 1845 | alone | 824 | pop af ;error |
| 825 | pop hl |
||
| 826 | pop de |
||
| 593 | alone | 827 | |
| 1845 | alone | 828 | pop bc ;id |
| 593 | alone | 829 | ret |
| 830 | |||
| 831 | skipword |
||
| 832 | ;hl=string |
||
| 833 | ;out: hl=terminator/space addr |
||
| 834 | skipword0 |
||
| 835 | ld a,(hl) |
||
| 836 | or a |
||
| 837 | ret z ;jr z,skipwordq |
||
| 838 | sub ' ' |
||
| 839 | ret z ;jr z,skipwordq |
||
| 840 | inc hl ;ldi |
||
| 841 | jr skipword0 |
||
| 842 | |||
| 843 | readfile_pages_dehl |
||
| 844 | ld a,d |
||
| 1410 | alone | 845 | SETPGC000 |
| 593 | alone | 846 | ld a,0xc100/256 |
| 847 | call cmd_loadpage |
||
| 848 | ret nz |
||
| 849 | ld a,e |
||
| 850 | call cmd_loadfullpage |
||
| 851 | ret nz |
||
| 852 | ld a,h |
||
| 853 | call cmd_loadfullpage |
||
| 854 | ret nz |
||
| 855 | ld a,l |
||
| 856 | cmd_loadfullpage |
||
| 1410 | alone | 857 | SETPGC000 |
| 593 | alone | 858 | ld a,0xc000/256 |
| 859 | cmd_loadpage |
||
| 860 | ;out: a=error |
||
| 861 | ;keeps hl,de |
||
| 862 | push de |
||
| 863 | push hl |
||
| 864 | ld d,a |
||
| 865 | xor a |
||
| 866 | ld l,a |
||
| 867 | ld e,a |
||
| 868 | sub d |
||
| 869 | ld h,a ;de=buffer, hl=size |
||
| 870 | curhandle=$+1 |
||
| 871 | ld b,0 |
||
| 872 | OS_READHANDLE |
||
| 873 | pop hl |
||
| 874 | pop de |
||
| 875 | or a |
||
| 876 | ret |
||
| 877 | |||
| 8 | dimkam | 878 | strcpexec_tryrun_bat |
| 289 | dimkam | 879 | ;display "strcpexec_tryrun_bat",strcpexec_tryrun_bat |
| 8 | dimkam | 880 | ;out: nz=error, cy=end of .bat |
| 881 | ;open .bat |
||
| 236 | alone | 882 | ;filename in wordbuf |
| 883 | ld de,wordbuf ;pop de |
||
| 884 | OS_OPENHANDLE |
||
| 885 | or a |
||
| 2039 | alone | 886 | ret nz ;jp nz,execcmd_error ;NC! |
| 236 | alone | 887 | ld a,b |
| 2039 | alone | 888 | ld (curbathandle),a |
| 236 | alone | 889 | |
| 890 | ld a,0x3c ;"inc a" |
||
| 891 | ld (readbyte_readbuf_last),a |
||
| 892 | ld iy,file_buf_end |
||
| 893 | strcpexec_tryrun_bat0 |
||
| 894 | ;load line to cmdbuf |
||
| 895 | ld hl,cmdbuf |
||
| 896 | LD (hl),0 |
||
| 897 | call readstr ;nz=EOF |
||
| 344 | alone | 898 | push af ;jr nz,strcpexec_tryrun_batq ;⮡ ப -⠪ 믮 |
| 236 | alone | 899 | |
| 900 | push iy |
||
| 901 | ld hl,cmdbuf |
||
| 902 | call prtext |
||
| 903 | call prcrlf |
||
| 904 | pop iy |
||
| 905 | |||
| 906 | ;call command in cmdbuf |
||
| 907 | push iy |
||
| 680 | alone | 908 | call openparams |
| 909 | call execcmd_maybepipes ;callcmd |
||
| 236 | alone | 910 | pop iy |
| 911 | |||
| 912 | pop af |
||
| 913 | jr z,strcpexec_tryrun_bat0 ;nz=EOF |
||
| 914 | strcpexec_tryrun_batq |
||
| 915 | ;close .bat |
||
| 916 | ld a,(curbathandle) |
||
| 917 | ld b,a |
||
| 918 | OS_CLOSEHANDLE |
||
| 919 | xor a |
||
| 344 | alone | 920 | scf ;⮡ 室 RUNAPP |
| 236 | alone | 921 | ret ;Z |
| 922 | |||
| 8 | dimkam | 923 | macro READBYTE_A |
| 924 | ;out: z=EOF |
||
| 925 | inc ly |
||
| 926 | call m,readbyte_readbuf |
||
| 927 | ld a,(iy) |
||
| 928 | endm |
||
| 929 | |||
| 930 | readstr |
||
| 931 | ;out: nz=EOF |
||
| 932 | ;skips empty lines! |
||
| 933 | READBYTE_A ;z=EOF |
||
| 934 | jr z,readstrEOF |
||
| 59 | Alone | 935 | cp 0x0d |
| 8 | dimkam | 936 | jr z,readstr ;empty string - retry |
| 59 | Alone | 937 | cp 0x0a |
| 8 | dimkam | 938 | jr z,readstr ;empty string - retry |
| 939 | ld b,MAXCMDSZ |
||
| 940 | jr readstr0go |
||
| 941 | readstr0 |
||
| 942 | READBYTE_A ;z=EOF |
||
| 344 | alone | 943 | jr z,readstrEOF ;頥 NZ |
| 944 | ;jr z,readstrq ;頥 Z |
||
| 59 | Alone | 945 | cp 0x0d |
| 8 | dimkam | 946 | jr z,readstrq |
| 59 | Alone | 947 | cp 0x0a |
| 8 | dimkam | 948 | jr z,readstrq |
| 949 | readstr0go |
||
| 950 | ld (hl),a |
||
| 951 | inc hl |
||
| 631 | alone | 952 | djnz readstr0 |
| 8 | dimkam | 953 | readstrq |
| 954 | xor a ;Z |
||
| 955 | ld (hl),a |
||
| 956 | inc hl |
||
| 957 | ret ;Z |
||
| 958 | readstrEOF |
||
| 959 | xor a |
||
| 960 | ld (hl),a |
||
| 961 | inc hl |
||
| 962 | dec a |
||
| 963 | ret ;NZ |
||
| 964 | |||
| 965 | readbyte_readbuf |
||
| 966 | ;out: z=EOF |
||
| 967 | push bc |
||
| 968 | push de |
||
| 969 | push hl |
||
| 970 | push ix |
||
| 236 | alone | 971 | ;jr $ |
| 8 | dimkam | 972 | xor a |
| 973 | readbyte_readbuf_last=$ ;TODO keep if recursive! |
||
| 974 | inc a ;/nop(z)=last, inc a(nz)=not last |
||
| 975 | jr z,readbyte_readbufq |
||
| 236 | alone | 976 | |
| 977 | if 1==1 |
||
| 978 | ;B = file handle, DE = Buffer address, HL = Number of bytes to read |
||
| 979 | curbathandle=$+1 |
||
| 980 | ld b,0 |
||
| 981 | ld de,file_buf |
||
| 982 | push de |
||
| 983 | ld hl,128 |
||
| 984 | OS_READHANDLE |
||
| 2039 | alone | 985 | ;jr $ |
| 236 | alone | 986 | pop iy |
| 987 | ;HL = Number of bytes actually read, A=error |
||
| 988 | ;sub 1 |
||
| 989 | ;sbc a,a ;error=0 => a=255, else a=0 (Z) |
||
| 990 | ;jr z,readbyte_readbufq ;error (=>EOF) |
||
| 991 | ;jr $ |
||
| 992 | ld a,l |
||
| 993 | or a |
||
| 994 | jr z,readbyte_readbufq ;0 bytes (=>EOF) |
||
| 995 | jp m,readbyte_readbufq ;128 bytes (NZ no EOF) (not last block) |
||
| 8 | dimkam | 996 | |
| 236 | alone | 997 | else ;CP/M-like |
| 998 | |||
| 8 | dimkam | 999 | ld de,file_buf |
| 1000 | push de |
||
| 1001 | OS_SETDTA ;set disk transfer address = de |
||
| 1002 | ld de,fcb_bat |
||
| 1003 | OS_FREAD |
||
| 1004 | pop iy |
||
| 1005 | xor 128 ;a = bytes read |
||
| 1006 | jr z,readbyte_readbufq |
||
| 1007 | jp m,readbyte_readbufq ;full block = not last block |
||
| 236 | alone | 1008 | |
| 1009 | endif |
||
| 1010 | |||
| 8 | dimkam | 1011 | ;last block: shift data to the end of buf, mark last |
| 1012 | ld c,a ;1..128 |
||
| 1013 | ld b,0 ;nz! |
||
| 1014 | ld a,b |
||
| 236 | alone | 1015 | ld (readbyte_readbuf_last),a ;last block |
| 8 | dimkam | 1016 | ld hl,file_buf |
| 1017 | add hl,bc |
||
| 1018 | dec hl ;end of data |
||
| 1019 | ld de,file_buf+127 |
||
| 1020 | lddr |
||
| 1021 | inc de |
||
| 1022 | push de |
||
| 1023 | pop iy |
||
| 1024 | ;nz! |
||
| 1025 | readbyte_readbufq |
||
| 1026 | ;iy=addr |
||
| 1027 | ;z=EOF |
||
| 1028 | pop ix |
||
| 1029 | pop hl |
||
| 1030 | pop de |
||
| 1031 | pop bc |
||
| 1032 | ret |
||
| 1033 | |||
| 1034 | cmd_dir |
||
| 652 | dimkam | 1035 | ld de,(execcmd_pars) |
| 1036 | ;ld de,emptypath |
||
| 644 | alone | 1037 | OS_OPENDIR |
| 1038 | or a |
||
| 1039 | ld bc,0 ;nfiles |
||
| 1040 | jp nz,loaddir2_error |
||
| 1041 | cmd_dir2_0 |
||
| 1042 | push bc |
||
| 1043 | ld de,filinfo |
||
| 1044 | OS_READDIR |
||
| 1045 | pop bc |
||
| 1046 | or a |
||
| 1047 | jr nz,loaddir2q |
||
| 1048 | ld a,(filinfo+FILINFO_FNAME) |
||
| 1049 | or a |
||
| 1050 | jr z,loaddir2q |
||
| 1051 | push bc |
||
| 645 | alone | 1052 | ld ix,(filinfo+FILINFO_FDATE) |
| 1053 | ld hl,(filinfo+FILINFO_FTIME) |
||
| 1054 | call prdate_time |
||
| 1055 | |||
| 644 | alone | 1056 | ld a,' ' |
| 1057 | PRCHAR_ |
||
| 645 | alone | 1058 | |
| 644 | alone | 1059 | ld hl,(filinfo+FILINFO_FSIZE) |
| 1518 | alone | 1060 | ld de,(filinfo+FILINFO_FSIZE+2) |
| 1061 | call prdword_dehl |
||
| 644 | alone | 1062 | ld a,' ' |
| 1063 | PRCHAR_ |
||
| 645 | alone | 1064 | |
| 1065 | ld hl,filinfo+FILINFO_LNAME |
||
| 1066 | ld a,(hl) |
||
| 1067 | or a |
||
| 1068 | jr nz,$+5 |
||
| 1069 | ld hl,filinfo+FILINFO_FNAME |
||
| 2039 | alone | 1070 | ;ld c,0 ;c=x??? |
| 645 | alone | 1071 | call prtext |
| 2039 | alone | 1072 | ;c=x??? |
| 644 | alone | 1073 | call prcrlf |
| 1074 | pop bc ;nfiles |
||
| 1075 | inc bc ;nfiles |
||
| 1076 | or a |
||
| 1077 | jr cmd_dir2_0 |
||
| 1078 | loaddir2_error |
||
| 1079 | loaddir2q |
||
| 1080 | ;bc=nfiles |
||
| 1081 | ld h,b |
||
| 1082 | ld l,c |
||
| 1083 | call prword |
||
| 1084 | ld hl,t_files_crlf |
||
| 1085 | jp prtext |
||
| 1086 | |||
| 571 | alone | 1087 | prdate_time |
| 1088 | ;ix=date, hl=time |
||
| 1089 | ld de,datetimebuf |
||
| 1090 | push de |
||
| 1091 | push hl ;time |
||
| 1092 | ;push ix ;date |
||
| 1093 | ld a,hx |
||
| 8 | dimkam | 1094 | srl a |
| 1095 | sub 20 |
||
| 1096 | jr nc,$+4 |
||
| 1097 | add a,100 ;XX century |
||
| 1098 | call prNNcmd ;year |
||
| 571 | alone | 1099 | ;ld a,'-' |
| 1100 | ;PRCHAR_ |
||
| 1101 | inc de |
||
| 1102 | ;pop hl |
||
| 1103 | ld a,lx |
||
| 8 | dimkam | 1104 | push af |
| 571 | alone | 1105 | add ix,ix |
| 1106 | add ix,ix |
||
| 1107 | add ix,ix |
||
| 1108 | ld a,hx |
||
| 59 | Alone | 1109 | and 0x0f |
| 8 | dimkam | 1110 | call prNNcmd ;month |
| 571 | alone | 1111 | ;ld a,'-' |
| 1112 | ;PRCHAR_ |
||
| 1113 | inc de |
||
| 8 | dimkam | 1114 | pop af |
| 59 | Alone | 1115 | and 0x1f |
| 571 | alone | 1116 | call prNNcmd ;day |
| 8 | dimkam | 1117 | |
| 571 | alone | 1118 | ;ld a,' ' |
| 1119 | ;PRCHAR_ |
||
| 1120 | inc de |
||
| 1121 | pop hl ;time |
||
| 8 | dimkam | 1122 | push hl |
| 1123 | ld a,h |
||
| 1124 | rra |
||
| 1125 | rra |
||
| 1126 | rra |
||
| 59 | Alone | 1127 | and 0x1f |
| 8 | dimkam | 1128 | call prNNcmd ;hour |
| 571 | alone | 1129 | ;ld a,':' |
| 1130 | ;PRCHAR_ |
||
| 1131 | inc de |
||
| 8 | dimkam | 1132 | pop hl |
| 1133 | ld a,l |
||
| 1134 | push af |
||
| 1135 | add hl,hl |
||
| 1136 | add hl,hl |
||
| 1137 | add hl,hl |
||
| 1138 | ld a,h |
||
| 59 | Alone | 1139 | and 0x3f |
| 8 | dimkam | 1140 | call prNNcmd ;minute |
| 571 | alone | 1141 | ;ld a,':' |
| 1142 | ;PRCHAR_ |
||
| 1143 | inc de |
||
| 8 | dimkam | 1144 | pop af |
| 1145 | add a,a |
||
| 59 | Alone | 1146 | and 0x3f |
| 571 | alone | 1147 | call prNNcmd ;second |
| 1148 | pop hl |
||
| 1149 | ld de,8+1+8 |
||
| 1150 | jp cmdprNchars |
||
| 8 | dimkam | 1151 | |
| 571 | alone | 1152 | prNNcmd |
| 1153 | ;a=NN |
||
| 574 | alone | 1154 | ;de=buf |
| 571 | alone | 1155 | ld bc,10+(256*('0'-1)) |
| 1156 | sub c |
||
| 1157 | inc b |
||
| 1158 | jr nc,$-2 |
||
| 1159 | ex de,hl |
||
| 1160 | ld (hl),b |
||
| 1161 | ex de,hl |
||
| 1162 | inc de |
||
| 1163 | add a,'0'+10 |
||
| 1164 | ld (de),a |
||
| 1165 | inc de |
||
| 1166 | ret |
||
| 1167 | |||
| 1168 | datetimebuf |
||
| 1169 | db "00-00-00 00:00:00" |
||
| 1170 | |||
| 8 | dimkam | 1171 | skipspaces |
| 1172 | ;hl=string |
||
| 1173 | ;out: hl=after last space |
||
| 1174 | ld a,(hl) |
||
| 1175 | cp ' ' |
||
| 1176 | ret nz |
||
| 1177 | inc hl |
||
| 1178 | jr skipspaces |
||
| 1179 | |||
| 1180 | strcopy |
||
| 1181 | ;hl->de |
||
| 1182 | strcopy0 |
||
| 1183 | ld a,(hl) |
||
| 1184 | ldi |
||
| 1185 | or a |
||
| 1186 | jr nz,strcopy0 |
||
| 1187 | ret |
||
| 1188 | |||
| 1189 | cmd_cd |
||
| 1190 | execcmd_pars=$+1 |
||
| 1191 | ld hl,0 |
||
| 1192 | ld a,(hl) |
||
| 1193 | or a |
||
| 1194 | jr z,cmd_error_nopars |
||
| 1195 | ex de,hl ;de=path |
||
| 1196 | OS_CHDIR |
||
| 1197 | or a |
||
| 1198 | ret z |
||
| 1199 | ld hl,twrongpath |
||
| 1200 | jp cmderror |
||
| 1201 | |||
| 1202 | cmd_error_nopars |
||
| 1203 | ld hl,tnopars |
||
| 1204 | jp cmderror |
||
| 1205 | cmd_error_notenoughpars |
||
| 1206 | ld hl,tnotenoughpars |
||
| 1207 | jp cmderror |
||
| 1208 | |||
| 1209 | cmd_md |
||
| 1210 | ld hl,(execcmd_pars) |
||
| 1211 | ld a,(hl) |
||
| 1212 | or a |
||
| 1213 | jr z,cmd_error_nopars |
||
| 1214 | ex de,hl ;de=dirname |
||
| 1215 | OS_MKDIR |
||
| 1216 | or a |
||
| 1217 | ret z |
||
| 1218 | cmd_error_cantmakedir |
||
| 1219 | ld hl,tcantmakedir |
||
| 1220 | jp cmderror |
||
| 1221 | |||
| 1222 | cmd_del |
||
| 1223 | ld hl,(execcmd_pars) |
||
| 1224 | ld a,(hl) |
||
| 1225 | or a |
||
| 1226 | jr z,cmd_error_nopars |
||
| 1227 | ex de,hl |
||
| 64 | Alone | 1228 | OS_DELETE |
| 8 | dimkam | 1229 | or a |
| 1230 | ret z |
||
| 1231 | cmd_error_wrongfile |
||
| 1232 | ld hl,twrongfile |
||
| 1233 | jp cmderror |
||
| 1234 | |||
| 1235 | cmd_ren |
||
| 1236 | ld hl,(execcmd_pars) |
||
| 1237 | ld a,(hl) |
||
| 1238 | or a |
||
| 1239 | jr z,cmd_error_nopars |
||
| 1240 | ld de,wordbuf |
||
| 1241 | call getword ;hl=terminator/space addr |
||
| 1242 | call skipspaces |
||
| 1243 | ld a,(hl) |
||
| 1244 | or a |
||
| 1245 | jr z,cmd_error_notenoughpars |
||
| 1246 | ld de,wordbuf2 |
||
| 1247 | call getword ;hl=terminator/space addr |
||
| 1248 | ld de,wordbuf |
||
| 1249 | ld hl,wordbuf2 |
||
| 1299 | alone | 1250 | ld a,(de) |
| 1251 | cp '*' |
||
| 1252 | jr z,cmd_ren_star |
||
| 8 | dimkam | 1253 | OS_RENAME |
| 1254 | or a |
||
| 1255 | ret z |
||
| 1299 | alone | 1256 | cmd_ren_star_error |
| 8 | dimkam | 1257 | ld hl,tcantrename |
| 1258 | jp cmderror |
||
| 1299 | alone | 1259 | cmd_ren_star |
| 1260 | cp (hl) |
||
| 1261 | jr nz,cmd_ren_star_error |
||
| 1262 | ;ন ⮫쪮 २ ren *.ext1 *.ext2 |
||
| 1263 | inc hl |
||
| 1264 | inc de |
||
| 1265 | ld a,(de) |
||
| 1266 | cp '.' |
||
| 1267 | jr nz,cmd_ren_star_error |
||
| 1268 | cp (hl) |
||
| 1269 | jr nz,cmd_ren_star_error |
||
| 1270 | inc hl |
||
| 1271 | inc de |
||
| 1272 | ;de,hl 㪠뢠 ext1, ext2 |
||
| 1273 | ld (cmd_ren_star_ext1),de |
||
| 1274 | ld (cmd_ren_star_ext2),hl |
||
| 1275 | ld de,emptypath |
||
| 1276 | OS_OPENDIR |
||
| 1277 | ;塞 䠩 ⥪饩 ४ਨ ᮮ⢥⢨ filename.ext1 |
||
| 1278 | ; ᮢ, २뢠 filename.ext2 |
||
| 1279 | cmd_ren_star0 |
||
| 1280 | ld de,filinfo |
||
| 1281 | ;de=buf for FILINFO (if no LNAME, use FNAME), 0x00 in FILINFO_FNAME = end dir |
||
| 1282 | OS_READDIR |
||
| 1283 | ;out in A=error(0 - no error, 4 - no more files, other - critical error) |
||
| 1284 | or a |
||
| 1285 | ret nz ;todo show N files renamed |
||
| 1286 | ld hl,filinfo+FILINFO_LNAME ; |
||
| 1287 | ld a,(hl) |
||
| 1288 | or a |
||
| 1289 | jr nz,$+5 |
||
| 1290 | ld hl,filinfo+FILINFO_FNAME |
||
| 1291 | push hl ;from name |
||
| 1292 | call findlastdot |
||
| 1293 | ;de=after last dot |
||
| 1294 | cmd_ren_star_ext1=$+1 |
||
| 1295 | ld hl,0 |
||
| 1296 | call strcp ;z=yes |
||
| 1297 | pop hl ;from name |
||
| 1298 | jr nz,cmd_ren_star0 |
||
| 1299 | |||
| 1300 | ;ld hl,filinfo+FILINFO_LNAME |
||
| 1301 | push hl ;from name |
||
| 1302 | ld de,filenamebuf |
||
| 1303 | push de |
||
| 1304 | call strcopy |
||
| 1305 | pop hl ;to name |
||
| 1306 | push hl |
||
| 1307 | call findlastdot |
||
| 1308 | ;de=after last dot in toname |
||
| 1309 | cmd_ren_star_ext2=$+1 |
||
| 1310 | ld hl,0 |
||
| 1311 | call strcopy ;z=yes ; ९ 室 filenamebuf2 |
||
| 1312 | pop hl ;to name |
||
| 1313 | pop de ;from name |
||
| 1314 | ;ld hl,filenamebuf2 ;to name |
||
| 1315 | OS_RENAME |
||
| 1316 | ;TODO inc count |
||
| 1317 | jr cmd_ren_star0 |
||
| 1318 | |||
| 8 | dimkam | 1319 | cmd_copy |
| 1320 | ld hl,(execcmd_pars) |
||
| 1321 | ld a,(hl) |
||
| 1322 | or a |
||
| 1299 | alone | 1323 | jp z,cmd_error_nopars |
| 8 | dimkam | 1324 | ld de,filenamebuf;wordbuf |
| 1325 | call getword ;hl=terminator/space addr |
||
| 1326 | call skipspaces |
||
| 1327 | ld a,(hl) |
||
| 1328 | or a |
||
| 1299 | alone | 1329 | jp z,cmd_error_notenoughpars |
| 8 | dimkam | 1330 | ld de,filenamebuf2;wordbuf2 |
| 1331 | call getword ;hl=terminator/space addr |
||
| 1332 | |||
| 1333 | ld de,filenamebuf;wordbuf ;de=drive/path/file |
||
| 1334 | OS_OPENHANDLE |
||
| 1335 | or a |
||
| 1336 | jp nz,cmd_error_wrongfile |
||
| 1337 | ld a,b |
||
| 1338 | ld (close_file1_handle),a |
||
| 1339 | ld hl,close_file1 |
||
| 1340 | push hl |
||
| 1341 | |||
| 1342 | ld de,filenamebuf2;wordbuf2 ;de=drive/path/file |
||
| 1343 | OS_CREATEHANDLE |
||
| 1344 | or a |
||
| 1345 | jp nz,cmd_error_cant_copy |
||
| 1346 | ld a,b |
||
| 1347 | ld (cmd_copy_close_file2_handle),a |
||
| 1348 | ld hl,cmd_copy_close_file2 |
||
| 1349 | push hl |
||
| 1350 | cmd_copy0 |
||
| 1351 | ld hl,copybuf_sz |
||
| 1352 | ld de,copybuf |
||
| 1353 | ld a,(close_file1_handle) |
||
| 1354 | ld b,a |
||
| 1355 | ;B = file handle, DE = Buffer address, HL = Number of bytes to read |
||
| 1356 | push de |
||
| 1357 | OS_READHANDLE |
||
| 1358 | ;HL = Number of bytes actually read, A=error |
||
| 1359 | pop de |
||
| 1360 | ld a,h |
||
| 1361 | or l |
||
| 1362 | ret z ;0 bytes remain |
||
| 1363 | ld a,(cmd_copy_close_file2_handle) |
||
| 1364 | ld b,a |
||
| 1365 | ;B = file handle, DE = Buffer address, HL = Number of bytes to write |
||
| 1366 | OS_WRITEHANDLE |
||
| 1367 | jr cmd_copy0 |
||
| 1368 | |||
| 1369 | close_file1 |
||
| 1370 | close_file1_handle=$+1 |
||
| 1371 | ld b,0 |
||
| 1372 | OS_CLOSEHANDLE |
||
| 1373 | ret |
||
| 1374 | |||
| 1375 | cmd_copy_close_file2 |
||
| 1376 | cmd_copy_close_file2_handle=$+1 |
||
| 1377 | ld b,0 |
||
| 1378 | OS_CLOSEHANDLE |
||
| 1379 | ld de,filenamebuf;wordbuf;filenametext |
||
| 1380 | OS_GETFILETIME ;ix=date, hl=time |
||
| 1381 | ld de,filenamebuf2;wordbuf2 |
||
| 1382 | OS_SETFILETIME |
||
| 573 | alone | 1383 | ret |
| 8 | dimkam | 1384 | |
| 1385 | cmd_error_cant_copy |
||
| 1386 | ld hl,tcantcopy |
||
| 1387 | jp cmderror |
||
| 573 | alone | 1388 | |
| 8 | dimkam | 1389 | cmd_rem |
| 1390 | ret |
||
| 1391 | |||
| 1392 | cmd_mem |
||
| 1393 | ld hl,tfree |
||
| 1394 | call prtext |
||
| 1395 | ld b,0 |
||
| 1396 | cmd_mem0 |
||
| 1397 | push bc |
||
| 1398 | OS_NEWPAGE |
||
| 1399 | pop bc |
||
| 1400 | or a |
||
| 1401 | jr nz,cmd_mem_del |
||
| 1402 | inc b |
||
| 1403 | push de |
||
| 1404 | jr cmd_mem0 |
||
| 1405 | cmd_mem_del |
||
| 1406 | ld c,b |
||
| 1407 | inc b |
||
| 1408 | dec b |
||
| 1409 | jr z,cmd_mem_q |
||
| 1410 | cmd_mem_del0 |
||
| 1411 | pop de |
||
| 1412 | push bc |
||
| 1413 | OS_DELPAGE |
||
| 1414 | pop bc |
||
| 631 | alone | 1415 | djnz cmd_mem_del0 |
| 8 | dimkam | 1416 | cmd_mem_q |
| 1417 | ;c=free pages |
||
| 1418 | ld l,c |
||
| 1419 | ld h,0 |
||
| 875 | alone | 1420 | prword_hl_crlf |
| 8 | dimkam | 1421 | call prword |
| 1422 | jp prcrlf |
||
| 1423 | |||
| 1424 | cmd_drop |
||
| 1425 | ld hl,(execcmd_pars) |
||
| 1426 | ld a,(hl) |
||
| 1427 | or a |
||
| 1428 | jp z,cmd_error_nopars |
||
| 1429 | xor a |
||
| 1430 | ld d,a |
||
| 1431 | cmd_drop_par0 |
||
| 1432 | add a,d |
||
| 1433 | ld e,a ;id |
||
| 1434 | add a,a |
||
| 1435 | add a,a |
||
| 1436 | add a,e |
||
| 1437 | add a,a |
||
| 1438 | ld d,a ;d=e*10 |
||
| 1439 | ld a,(hl) |
||
| 1440 | inc hl |
||
| 1441 | sub '0' |
||
| 1442 | cp 10 |
||
| 1443 | jr c,cmd_drop_par0 |
||
| 1444 | ;e=id |
||
| 1445 | OS_DROPAPP |
||
| 1446 | or a |
||
| 1447 | ret z |
||
| 1448 | ld hl,twrongid |
||
| 1449 | jp cmderror |
||
| 1450 | |||
| 1451 | cmd_proc |
||
| 1452 | ld e,1 ;no id 0 |
||
| 1453 | cmd_proc0 |
||
| 1298 | alone | 1454 | ld a,e |
| 1455 | ld (cmd_proc_id),a |
||
| 8 | dimkam | 1456 | push de |
| 1457 | OS_GETAPPMAINPAGES ;d,e,h,l=pages in 0000,4000,8000,c000, c=flags |
||
| 1458 | or a |
||
| 1459 | jr nz,cmd_proc_skip |
||
| 1460 | ld a,d |
||
| 1298 | alone | 1461 | pop de ;e=id |
| 1462 | push de ;e=id |
||
| 8 | dimkam | 1463 | push bc |
| 1298 | alone | 1464 | push af ;main page |
| 1465 | ex de,hl ;l=id |
||
| 8 | dimkam | 1466 | ld h,0 |
| 1467 | call prword |
||
| 1468 | ld a,' ' |
||
| 545 | alone | 1469 | PRCHAR_ |
| 8 | dimkam | 1470 | pop af ;main page |
| 1410 | alone | 1471 | SETPGC000 |
| 8 | dimkam | 1472 | pop bc ;c=flags |
| 1473 | push bc |
||
| 1474 | bit factive,c |
||
| 1475 | ld a,'-' |
||
| 1476 | jr z,$+4 |
||
| 1477 | ld a,'+' |
||
| 545 | alone | 1478 | PRCHAR_ |
| 8 | dimkam | 1479 | pop bc |
| 11 | dimkam | 1480 | push bc |
| 8 | dimkam | 1481 | bit fgfx,c |
| 1482 | ld a,' ' |
||
| 1483 | jr z,$+4 |
||
| 1484 | ld a,'g' |
||
| 545 | alone | 1485 | PRCHAR_ |
| 11 | dimkam | 1486 | pop bc |
| 1487 | bit fwaiting,c |
||
| 1488 | ld a,' ' |
||
| 1489 | jr z,$+4 |
||
| 1490 | ld a,'w' |
||
| 545 | alone | 1491 | PRCHAR_ |
| 8 | dimkam | 1492 | ld a,' ' |
| 545 | alone | 1493 | PRCHAR_ |
| 1298 | alone | 1494 | |
| 1495 | ld de,0 ;e=page, d=number of pages for this id |
||
| 1496 | cmd_proc_countmem0 |
||
| 1497 | push de |
||
| 1498 | OS_GETPAGEOWNER |
||
| 1499 | ld a,e |
||
| 1500 | pop de |
||
| 1501 | cmd_proc_id=$+1 |
||
| 1502 | cp 0 |
||
| 1503 | jr nz,$+3 |
||
| 1504 | inc d |
||
| 1505 | inc e |
||
| 1506 | jr nz,cmd_proc_countmem0 |
||
| 1507 | ld l,d ;print number of used pages |
||
| 1508 | ld h,0 |
||
| 1509 | call prword |
||
| 1510 | |||
| 1511 | ld a,' ' |
||
| 1512 | PRCHAR_ |
||
| 1513 | |||
| 8 | dimkam | 1514 | ld hl,0xc000+COMMANDLINE |
| 1515 | call prtext |
||
| 1516 | call prcrlf |
||
| 1517 | cmd_proc_skip |
||
| 1518 | pop de |
||
| 1519 | inc e |
||
| 1520 | ld a,e |
||
| 147 | alone | 1521 | inc a ;no id 0xff |
| 8 | dimkam | 1522 | jr nz,cmd_proc0 |
| 1523 | ret |
||
| 1524 | |||
| 1525 | cmd_date |
||
| 1526 | OS_GETTIME ;ix=date, hl=time |
||
| 571 | alone | 1527 | call prdate_time |
| 8 | dimkam | 1528 | jp prcrlf |
| 1529 | |||
| 1530 | cmd_t0 |
||
| 1531 | ld a,(wordbuf) |
||
| 571 | alone | 1532 | and 0xdf |
| 122 | alone | 1533 | sub 'A' |
| 8 | dimkam | 1534 | call cmdsetdrive |
| 1535 | or a |
||
| 1536 | ret z |
||
| 1537 | ld hl,tdrivenotfound |
||
| 1538 | jp cmderror |
||
| 1539 | |||
| 1540 | cmderror |
||
| 1541 | push hl |
||
| 574 | alone | 1542 | ld de,_ERRORCOLOR |
| 573 | alone | 1543 | SETCOLOR_ |
| 8 | dimkam | 1544 | pop hl |
| 1545 | call prtext |
||
| 574 | alone | 1546 | ld de,_COLOR |
| 573 | alone | 1547 | SETCOLOR_ |
| 8 | dimkam | 1548 | prcrlf |
| 571 | alone | 1549 | ;ld a,0x0d |
| 1550 | ;PRCHAR_ |
||
| 1551 | ;ld a,0x0a |
||
| 1552 | ;PRCHAR_ |
||
| 1553 | ld hl,crlfbuf |
||
| 1554 | ld de,2 |
||
| 1555 | jp cmdprNchars |
||
| 1556 | crlfbuf |
||
| 1557 | db 0x0d,0x0a |
||
| 8 | dimkam | 1558 | |
| 1559 | cmdsetdrive |
||
| 1560 | ld e,a |
||
| 1561 | OS_SETDRV |
||
| 1562 | ret |
||
| 1563 | |||
| 1564 | cmd_type |
||
| 1565 | ld hl,(execcmd_pars) |
||
| 1566 | ld a,(hl) |
||
| 1567 | or a |
||
| 1568 | jp z,cmd_error_nopars |
||
| 1569 | ld de,wordbuf |
||
| 2039 | alone | 1570 | push de |
| 8 | dimkam | 1571 | call getword ;hl=terminator/space addr |
| 2039 | alone | 1572 | pop de ;ld de,wordbuf ;de=drive/path/file |
| 8 | dimkam | 1573 | OS_OPENHANDLE |
| 1574 | or a |
||
| 1575 | jp nz,cmd_error_wrongfile |
||
| 1576 | ld a,b |
||
| 1577 | ld (close_file1_handle),a |
||
| 1578 | ld hl,close_file1 |
||
| 2039 | alone | 1579 | push hl |
| 8 | dimkam | 1580 | cmd_type0 |
| 1581 | ;B = file handle, DE = Buffer address, HL = Number of bytes to read |
||
| 1582 | push bc |
||
| 1583 | ld de,cmd_type_buf |
||
| 1584 | ld hl,1 |
||
| 1585 | OS_READHANDLE |
||
| 1586 | ;HL = Number of bytes actually read, A=error |
||
| 1587 | pop bc |
||
| 1588 | ld a,h |
||
| 1589 | or l |
||
| 1590 | ret z ;0 bytes remain |
||
| 1591 | push bc |
||
| 1592 | cmd_type_buf=$+1 |
||
| 1593 | ld a,0 |
||
| 545 | alone | 1594 | PRCHAR_ |
| 8 | dimkam | 1595 | pop bc |
| 1596 | jr cmd_type0 |
||
| 1597 | |||
| 548 | alone | 1598 | cmd_tee |
| 570 | alone | 1599 | ;tee filename |
| 1863 | alone | 1600 | ;copy stdin to filename and to stdout |
| 548 | alone | 1601 | ld hl,(execcmd_pars) |
| 1602 | ld a,(hl) |
||
| 1603 | or a |
||
| 1604 | jp z,cmd_error_nopars |
||
| 1605 | ld de,wordbuf |
||
| 2039 | alone | 1606 | push de |
| 548 | alone | 1607 | call getword ;hl=terminator/space addr |
| 2039 | alone | 1608 | pop de ;ld de,wordbuf ;de=drive/path/file |
| 548 | alone | 1609 | OS_CREATEHANDLE |
| 1610 | or a |
||
| 1611 | jp nz,cmd_error_wrongfile |
||
| 1612 | ld a,b |
||
| 1613 | ld (close_file1_handle),a |
||
| 1614 | ld hl,close_file1 |
||
| 1615 | push hl |
||
| 1616 | cmd_tee0 |
||
| 1617 | push bc |
||
| 573 | alone | 1618 | GETKEY_ |
| 548 | alone | 1619 | ld (cmd_type_buf),a |
| 1620 | pop bc |
||
| 1621 | ret c ;input pipe closed |
||
| 1622 | ld a,(cmd_type_buf) |
||
| 1623 | PRCHAR_ |
||
| 1624 | ;B = file handle, DE = Buffer address, HL = Number of bytes to read |
||
| 1625 | push bc |
||
| 1626 | ld de,cmd_type_buf |
||
| 1627 | ld hl,1 ;TODO , ⮬ |
||
| 1628 | OS_WRITEHANDLE |
||
| 1629 | ;HL = Number of bytes actually written, A=error? |
||
| 1630 | pop bc |
||
| 1631 | jr cmd_tee0 |
||
| 2039 | alone | 1632 | |
| 1673 | dimkam | 1633 | cmd_uname |
| 2039 | alone | 1634 | ld hl,nedostr |
| 1673 | dimkam | 1635 | call prtext |
| 2039 | alone | 1636 | OS_GETCONFIG |
| 1637 | push ix |
||
| 1638 | pop de |
||
| 1639 | ld h,b |
||
| 1640 | ld l,c |
||
| 1641 | call prdword_dehl |
||
| 1642 | jp prcrlf |
||
| 1674 | dimkam | 1643 | nedostr defb "NedoOS Kernel revision ",0 |
| 1644 | |||
| 8 | dimkam | 1645 | cmd_echo |
| 1646 | ld hl,(execcmd_pars) |
||
| 1647 | call prtext |
||
| 1648 | jp prcrlf |
||
| 1674 | dimkam | 1649 | |
| 8 | dimkam | 1650 | cmd_pause |
| 1805 | kulich | 1651 | call getkey |
| 1674 | dimkam | 1652 | ld hl,(execcmd_pars) |
| 2039 | alone | 1653 | ld a,(hl) |
| 1674 | dimkam | 1654 | or a |
| 2039 | alone | 1655 | jr z,cmd_pause_infin |
| 1656 | ld de,copybuf |
||
| 1657 | call strtobyte_hltode |
||
| 1658 | ld hl,(copybuf) ;㬭 50 ⮢ ᥪ㭤 |
||
| 1659 | ld d,h |
||
| 1660 | ld e,l |
||
| 1661 | add hl,hl |
||
| 1662 | add hl,de |
||
| 1663 | add hl,hl |
||
| 1664 | add hl,hl |
||
| 1665 | add hl,hl |
||
| 1666 | add hl,de |
||
| 1667 | add hl,hl |
||
| 1668 | ;display "cmd_pause ",cmd_pause |
||
| 1674 | dimkam | 1669 | cmd_pause_loop ; 砭 稪, |
| 2039 | alone | 1670 | ld a,h |
| 1671 | or l |
||
| 1672 | ret z |
||
| 1673 | push hl |
||
| 1674 | ld c,CMD_YIELD |
||
| 1675 | call BDOS ;YIELD |
||
| 1676 | call getkey |
||
| 1677 | pop hl |
||
| 1674 | dimkam | 1678 | ret c ;error |
| 2039 | alone | 1679 | or a |
| 1680 | ret nz |
||
| 1681 | dec hl |
||
| 1682 | jr cmd_pause_loop |
||
| 1674 | dimkam | 1683 | |
| 1684 | cmd_pause_infin |
||
| 545 | alone | 1685 | call yieldgetkeyloop ;YIELDGETKEYLOOP |
| 55 | Alone | 1686 | cp key_redraw |
| 1687 | jr z,cmd_pause |
||
| 8 | dimkam | 1688 | ret |
| 1689 | |||
| 1690 | cmd_copydir |
||
| 1691 | ld hl,(execcmd_pars) |
||
| 1692 | ld a,(hl) |
||
| 1693 | or a |
||
| 1694 | jp z,cmd_error_nopars |
||
| 1695 | ld de,wordbuf |
||
| 1696 | call getword ;hl=terminator/space addr |
||
| 1697 | call skipspaces |
||
| 1698 | ld a,(hl) |
||
| 1699 | or a |
||
| 1700 | jp z,cmd_error_notenoughpars |
||
| 1701 | ld de,wordbuf2 |
||
| 1702 | call getword ;hl=terminator/space addr |
||
| 1703 | |||
| 1704 | cmd_copydir_go |
||
| 1705 | ld hl,wordbuf |
||
| 1706 | call prtext |
||
| 1707 | ld a,'>' |
||
| 545 | alone | 1708 | PRCHAR_ |
| 8 | dimkam | 1709 | ld hl,wordbuf2 |
| 2039 | alone | 1710 | push hl |
| 8 | dimkam | 1711 | call prtext |
| 1712 | call prcrlf |
||
| 2039 | alone | 1713 | pop de ;ld de,wordbuf2 |
| 8 | dimkam | 1714 | OS_MKDIR |
| 1715 | |||
| 344 | alone | 1716 | ld bc,0 ; 䠩 ४ਨ |
| 8 | dimkam | 1717 | cmd_copydir0 |
| 1718 | push bc |
||
| 1719 | ld de,cmdprompt |
||
| 1720 | OS_CHDIR |
||
| 1721 | ld de,wordbuf |
||
| 1722 | OS_CHDIR |
||
| 1723 | pop bc |
||
| 1724 | push bc |
||
| 1725 | call getdirfcb_bc |
||
| 1726 | pop bc |
||
| 1727 | ret nz ;jr nz,cmd_copydirq |
||
| 1728 | |||
| 1729 | ld a,(fcb_filename) |
||
| 1730 | cp '.' |
||
| 1731 | jr z,cmd_copydir0_skip |
||
| 23 | dimkam | 1732 | ld a,(fcb+FCB_FATTRIB) |
| 8 | dimkam | 1733 | and FATTRIB_DIR |
| 1734 | jr nz,cmd_copydir0_recursive |
||
| 1735 | |||
| 1736 | push bc |
||
| 1737 | ld hl,fcb_filename |
||
| 1738 | ld de,filenamebuf |
||
| 1739 | call cpmname_to_dotname |
||
| 1740 | call open_setdir2_create_copy |
||
| 1741 | pop bc |
||
| 1742 | cmd_copydir0_skip |
||
| 1743 | inc bc |
||
| 1744 | jr cmd_copydir0 |
||
| 1745 | |||
| 1746 | macro STRPUSH |
||
| 1747 | ;hl=string addr |
||
| 1748 | xor a |
||
| 1749 | push af |
||
| 1750 | ld a,(hl) |
||
| 1751 | inc hl |
||
| 1752 | or a |
||
| 1753 | push af |
||
| 1754 | jr nz,$-4 |
||
| 1755 | pop af |
||
| 344 | alone | 1756 | ; ⥪ \0, ⥪ ( ନ) |
| 8 | dimkam | 1757 | endm |
| 1758 | |||
| 1759 | macro STRPOP |
||
| 1760 | ;hl=string addr |
||
| 1761 | ld d,h |
||
| 1762 | ld e,l |
||
| 1763 | pop af |
||
| 1764 | ld (hl),a |
||
| 1765 | inc hl |
||
| 1766 | or a |
||
| 1767 | jr nz,$-4 |
||
| 1768 | ex de,hl |
||
| 1769 | call strmirror |
||
| 1770 | endm |
||
| 1771 | |||
| 1772 | strmirror |
||
| 1773 | ;hl=string addr |
||
| 1774 | ld d,h |
||
| 1775 | ld e,l |
||
| 1776 | call strlen |
||
| 1777 | ld b,h |
||
| 1778 | ld c,l |
||
| 180 | demige | 1779 | ld a,b |
| 1780 | or c |
||
| 1781 | ret z |
||
| 344 | alone | 1782 | ;de=砫, bc=hl= |
| 8 | dimkam | 1783 | ;ld h,b |
| 1784 | ;ld l,c |
||
| 344 | alone | 1785 | add hl,de ;hl=+1 |
| 8 | dimkam | 1786 | srl b |
| 1787 | rr c ;bc=wid/2 |
||
| 1788 | mirrorbytes0 |
||
| 1789 | dec hl |
||
| 1790 | ld a,(de) |
||
| 1791 | ldi |
||
| 1792 | dec hl |
||
| 1793 | ld (hl),a |
||
| 1794 | jp pe,mirrorbytes0 |
||
| 1795 | ret |
||
| 1796 | |||
| 1797 | cmd_copydir0_recursive |
||
| 1798 | ;recursive copydir <wordbuf>/<filename> <wordbuf2>/<filename> |
||
| 1799 | push bc |
||
| 1800 | ld hl,wordbuf |
||
| 1801 | STRPUSH |
||
| 1802 | ld hl,wordbuf2 |
||
| 1803 | STRPUSH |
||
| 1804 | ;ld hl,cmdprompt |
||
| 1805 | ;STRPUSH |
||
| 1806 | |||
| 1807 | ld hl,wordbuf |
||
| 1808 | ld bc,0 |
||
| 1809 | xor a |
||
| 631 | alone | 1810 | cpir |
| 8 | dimkam | 1811 | dec hl ;hl=terminator addr |
| 1812 | ld (hl),'/' |
||
| 1813 | inc hl |
||
| 1814 | ex de,hl |
||
| 1815 | ld hl,fcb_filename |
||
| 1816 | ;ld de,filenamebuf |
||
| 1817 | call cpmname_to_dotname |
||
| 1818 | |||
| 1819 | ld hl,wordbuf2 |
||
| 1820 | ld bc,0 |
||
| 1821 | xor a |
||
| 631 | alone | 1822 | cpir |
| 8 | dimkam | 1823 | dec hl ;hl=terminator addr |
| 1824 | ld (hl),'/' |
||
| 1825 | inc hl |
||
| 1826 | ex de,hl |
||
| 1827 | ld hl,fcb_filename |
||
| 1828 | ;ld de,filenamebuf |
||
| 1829 | call cpmname_to_dotname |
||
| 1830 | |||
| 1831 | call cmd_copydir_go |
||
| 1832 | |||
| 1833 | ;restore dirnames, file # |
||
| 1834 | ;ld hl,cmdprompt |
||
| 1835 | ;STRPOP |
||
| 1836 | ld hl,wordbuf2 |
||
| 1837 | STRPOP |
||
| 1838 | ld hl,wordbuf |
||
| 1839 | STRPOP |
||
| 1840 | pop bc |
||
| 180 | demige | 1841 | jp cmd_copydir0_skip |
| 8 | dimkam | 1842 | |
| 1843 | open_setdir2_create_copy |
||
| 1844 | ;open.... |
||
| 1845 | ld de,filenamebuf;wordbuf ;de=drive/path/file |
||
| 1846 | OS_OPENHANDLE |
||
| 1847 | or a |
||
| 1848 | jp nz,cmd_error_wrongfile |
||
| 1849 | ld a,b |
||
| 1850 | ld (close_file1_handle),a |
||
| 1851 | ld hl,close_file1 |
||
| 1852 | push hl |
||
| 1853 | |||
| 1854 | ;set dir2... |
||
| 1855 | ld de,cmdprompt |
||
| 1856 | OS_CHDIR |
||
| 1857 | ld de,wordbuf2 |
||
| 1858 | OS_CHDIR |
||
| 1859 | |||
| 1860 | ;create.... |
||
| 1861 | ld de,filenamebuf;2;wordbuf2 ;de=drive/path/file |
||
| 1862 | OS_CREATEHANDLE |
||
| 1863 | or a |
||
| 1864 | jp nz,cmd_error_cant_copy |
||
| 1865 | ld a,b |
||
| 1866 | ld (cmd_copy_close_file2_handle),a |
||
| 1867 | ld hl,cmd_copy_close_file2 |
||
| 1868 | push hl |
||
| 1869 | |||
| 1870 | ;copy.... |
||
| 1871 | jp cmd_copy0 |
||
| 1872 | |||
| 1873 | |||
| 1874 | getdirfcb_bc |
||
| 1875 | ;bc=file number in current dir to read to fcb |
||
| 1876 | ;nz=error |
||
| 1877 | push bc |
||
| 1878 | ld de,fcb |
||
| 1879 | OS_SETDTA |
||
| 1880 | ld de,fcbmask |
||
| 1881 | OS_FSEARCHFIRST ;de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA |
||
| 1882 | pop bc |
||
| 1883 | or a |
||
| 1884 | ret nz |
||
| 1885 | |||
| 1886 | getdirfcb_bc0 |
||
| 1887 | ld a,b |
||
| 1888 | or c |
||
| 1889 | ret z |
||
| 1890 | dec bc |
||
| 1891 | push bc |
||
| 1892 | ld de,fcb |
||
| 1893 | OS_SETDTA |
||
| 1894 | ld de,fcbmask |
||
| 1895 | OS_FSEARCHNEXT ;(NOT CP/M!!!)de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA |
||
| 1896 | pop bc |
||
| 1897 | or a |
||
| 1898 | jr z,getdirfcb_bc0 |
||
| 573 | alone | 1899 | ret |
| 8 | dimkam | 1900 | |
| 1901 | ;hl = poi to filename in string |
||
| 1299 | alone | 1902 | ;out: ;de = after last slash |
| 8 | dimkam | 1903 | findlastslash. |
| 1904 | nfopenfnslash. |
||
| 1905 | ld d,h |
||
| 1906 | ld e,l ;de = after last slash |
||
| 1907 | nfopenfnslash0. |
||
| 1908 | ld a,[hl] |
||
| 1909 | inc hl |
||
| 1910 | or a |
||
| 1299 | alone | 1911 | ret z ;jr z,nfopenfnslashq. |
| 8 | dimkam | 1912 | cp '/' |
| 1913 | jr nz,nfopenfnslash0. |
||
| 1914 | jr nfopenfnslash. |
||
| 1299 | alone | 1915 | ;nfopenfnslashq. |
| 8 | dimkam | 1916 | ;de = after last slash |
| 1299 | alone | 1917 | ;ret |
| 8 | dimkam | 1918 | |
| 1299 | alone | 1919 | ;hl = poi to filename in string |
| 1920 | ;out: ;de = after last slash |
||
| 1921 | findlastdot |
||
| 1922 | nfopenfndot. |
||
| 1923 | ld d,h |
||
| 1924 | ld e,l ;de = after last dot |
||
| 1925 | nfopenfndot0. |
||
| 1926 | ld a,[hl] |
||
| 1927 | inc hl |
||
| 1928 | or a |
||
| 1929 | ret z |
||
| 1930 | cp '.' |
||
| 1931 | jr nz,nfopenfndot0. |
||
| 1932 | jr nfopenfndot. |
||
| 1933 | |||
| 8 | dimkam | 1934 | commandslist |
| 1935 | dw cmd_dir |
||
| 191 | demige | 1936 | db "ls",0 |
| 645 | alone | 1937 | dw cmd_dir |
| 8 | dimkam | 1938 | db "dir",0 |
| 1939 | dw cmd_del |
||
| 1940 | db "del",0 |
||
| 191 | demige | 1941 | dw cmd_del |
| 1942 | db "rm",0 |
||
| 8 | dimkam | 1943 | dw cmd_exit |
| 1944 | db "exit",0 |
||
| 1410 | alone | 1945 | dw cmd_exit |
| 1946 | db "quit",0 |
||
| 8 | dimkam | 1947 | dw cmd_cd |
| 1948 | db "cd",0 |
||
| 1949 | dw cmd_copy |
||
| 1950 | db "copy",0 |
||
| 191 | demige | 1951 | dw cmd_copy |
| 1952 | db "cp",0 |
||
| 8 | dimkam | 1953 | dw cmd_rem |
| 1954 | db "rem",0 |
||
| 1955 | dw cmd_md |
||
| 1956 | db "md",0 |
||
| 191 | demige | 1957 | dw cmd_md |
| 1958 | db "mkdir",0 |
||
| 8 | dimkam | 1959 | dw cmd_ren |
| 1960 | db "ren",0 |
||
| 191 | demige | 1961 | dw cmd_ren |
| 1962 | db "mv",0 |
||
| 8 | dimkam | 1963 | dw cmd_mem |
| 1964 | db "mem",0 |
||
| 191 | demige | 1965 | dw cmd_mem |
| 1966 | db "free",0 |
||
| 8 | dimkam | 1967 | dw cmd_proc |
| 1968 | db "proc",0 |
||
| 192 | demige | 1969 | dw cmd_proc |
| 1970 | db "ps",0 |
||
| 548 | alone | 1971 | dw cmd_tee |
| 1972 | db "tee",0 |
||
| 8 | dimkam | 1973 | dw cmd_drop |
| 1974 | db "drop",0 |
||
| 191 | demige | 1975 | dw cmd_drop |
| 1976 | db "kill",0 |
||
| 8 | dimkam | 1977 | dw cmd_date |
| 1978 | db "date",0 |
||
| 1979 | dw cmd_start |
||
| 1980 | db "start",0 |
||
| 1981 | dw cmd_copydir |
||
| 1982 | db "copydir",0 |
||
| 1983 | dw cmd_type |
||
| 1984 | db "type",0 |
||
| 548 | alone | 1985 | dw cmd_type |
| 1986 | db "cat",0 |
||
| 8 | dimkam | 1987 | dw cmd_echo |
| 1988 | db "echo",0 |
||
| 1989 | dw cmd_pause |
||
| 1990 | db "pause",0 |
||
| 1123 | alone | 1991 | dw cmd_cls |
| 1992 | db "cls",0 |
||
| 1673 | dimkam | 1993 | dw cmd_uname |
| 1994 | db "uname",0 |
||
| 8 | dimkam | 1995 | |
| 344 | alone | 1996 | dw -1 ; ⠡ |
| 8 | dimkam | 1997 | |
| 1729 | kulich | 1998 | |
| 8 | dimkam | 1999 | tunknowncommand |
| 2000 | db "Unknown command",0 |
||
| 2001 | tdrivenotfound |
||
| 2002 | db "Drive not found",0 |
||
| 2003 | tnopars |
||
| 2004 | db "No parameters",0 |
||
| 2005 | tnotenoughpars |
||
| 2006 | db "Not enough parameters",0 |
||
| 2007 | tcantcopy |
||
| 2008 | db "Can't copy",0 |
||
| 2009 | tcantwrite |
||
| 2010 | db "Can't write",0 |
||
| 2011 | twrongpath |
||
| 2012 | db "Wrong path",0 |
||
| 2013 | twrongfile |
||
| 2014 | db "Wrong file",0 |
||
| 2015 | tcantmakedir |
||
| 2016 | db "Can't make the directory",0 |
||
| 2017 | tcantrename |
||
| 2018 | db "Can't rename",0 |
||
| 2019 | t_files_crlf |
||
| 147 | alone | 2020 | db " files",0x0d,0x0a,0 |
| 8 | dimkam | 2021 | tfree |
| 2022 | db "free pages=",0 |
||
| 2023 | twrongid |
||
| 2024 | db "Wrong ID",0 |
||
| 2025 | |||
| 260 | alone | 2026 | ;oldtimer |
| 2027 | ; dw 0 |
||
| 8 | dimkam | 2028 | |
| 344 | alone | 2029 | db 0 ; 뢠 砩 ⢨ |
| 8 | dimkam | 2030 | wordbuf |
| 2031 | ds MAXCMDSZ+1 |
||
| 2032 | wordbuf2 |
||
| 2033 | ds MAXCMDSZ+1 |
||
| 2034 | filenamebuf |
||
| 2035 | ds MAXCMDSZ+1 |
||
| 2036 | filenamebuf2 |
||
| 2037 | ds MAXCMDSZ+1 |
||
| 2038 | |||
| 2039 | fcb |
||
| 2040 | ds FCB_sz |
||
| 23 | dimkam | 2041 | fcb_filename=fcb+FCB_FNAME |
| 8 | dimkam | 2042 | |
| 2043 | fcbmask |
||
| 2044 | db 0 |
||
| 2045 | db "???????????" |
||
| 2046 | ds FCB_sz-11-1 |
||
| 23 | dimkam | 2047 | fcbmask_filename=fcbmask+FCB_FNAME |
| 8 | dimkam | 2048 | |
| 2049 | fcb2 |
||
| 2050 | ds FCB_sz |
||
| 23 | dimkam | 2051 | fcb2_filename=fcb2+FCB_FNAME |
| 8 | dimkam | 2052 | |
| 2053 | fcb_bat |
||
| 2054 | ds FCB_sz |
||
| 23 | dimkam | 2055 | fcb_bat_filename=fcb_bat+FCB_FNAME |
| 8 | dimkam | 2056 | |
| 344 | alone | 2057 | oldpath ;TODO ( 㤥 loadapp १ OPENHANDLE) |
| 66 | Alone | 2058 | ds MAXPATH_sz;MAXCMDSZ+1 |
| 8 | dimkam | 2059 | |
| 66 | Alone | 2060 | sysdir |
| 2061 | ds MAXPATH_sz |
||
| 2062 | |||
| 8 | dimkam | 2063 | oldcmd |
| 2064 | ds MAXCMDSZ+1 |
||
| 2065 | |||
| 2066 | copybuf |
||
| 816 | alone | 2067 | ds 4096;128 ; 쪮 㣮 |
| 8 | dimkam | 2068 | copybuf_sz=$-copybuf |
| 2069 | |||
| 637 | alone | 2070 | params |
| 2071 | ds MAXCMDSZ+1 |
||
| 2072 | |||
| 644 | alone | 2073 | filinfo |
| 2074 | ds FILINFO_sz |
||
| 2075 | |||
| 2076 | emptypath |
||
| 2077 | db 0 |
||
| 2078 | |||
| 8 | dimkam | 2079 | align 256 |
| 2080 | file_buf |
||
| 637 | alone | 2081 | ds 128 ;buf for reading .bat |
| 8 | dimkam | 2082 | file_buf_end=$-1 |
| 2083 | |||
| 979 | alone | 2084 | if DEBUG |
| 2085 | printcurdir |
||
| 2086 | ld de,curdir__ |
||
| 2087 | push de |
||
| 2088 | OS_GETPATH |
||
| 2089 | pop hl |
||
| 2039 | alone | 2090 | ;ld c,0 |
| 979 | alone | 2091 | call prtext |
| 2039 | alone | 2092 | jp prcrlf |
| 1729 | kulich | 2093 | |
| 979 | alone | 2094 | curdir__ |
| 2095 | ds 256 |
||
| 2096 | endif |
||
| 2097 | |||
| 1509 | alone | 2098 | prword |
| 1518 | alone | 2099 | ld de,0 |
| 2100 | jp prdword_dehl |
||
| 1509 | alone | 2101 | |
| 2102 | include "../_sdk/prdword.asm" |
||
| 1674 | dimkam | 2103 | include "../_sdk/string.asm" |
| 546 | alone | 2104 | include "cmdpr.asm" |
| 573 | alone | 2105 | include "../_sdk/stdio.asm" |
| 8 | dimkam | 2106 | |
| 1123 | alone | 2107 | cmd_cls=clearterm ;print 25 lines of spaces except one |
| 2108 | |||
| 8 | dimkam | 2109 | cmd_end |
| 2110 | |||
| 289 | dimkam | 2111 | ;display "cmd size ",/d,cmd_end-cmd_begin," bytes" |
| 8 | dimkam | 2112 | |
| 2113 | savebin "cmd.com",cmd_begin,cmd_end-cmd_begin |
||
| 2114 | |||
| 1506 | alone | 2115 | LABELSLIST "../../us/user.l",1 |