;эх тъы■ўрхь gfxmode, ўЄюс√ idle эшъюуфр эх яюыєўры Їюъєё
;яю єьюыўрэш■ ёЄюшЄ ЄхъёЄьюф
ld sp,#4000 ;эхы№ч эшцх #3b00 ш эхы№ч яхЁхёхў№ё ё resident (хёыш ь√ т pgtrdosfs)
ld e,7
OS_CLS
;хёыш ёфхырЄ№ SETGFX, Єю яюёых ттхфхэш ЄхЁьшэрыют яю тшЄё ыш°эшщ ЄхЁьшэры яюф idle
OS_GETMAINPAGES
;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000
push hl
OS_DELPAGE
pop hl
push hl
ld e,h
OS_DELPAGE
pop hl
ld e,l
OS_DELPAGE
ld e,'A'
mountdrives0
push de
ld a,e
ld (tdrivemounted_drive),a
OS_MOUNT
or a
jr nz,.mnt_fail
ld hl,tdrivemounted
call prtext
pop de
jr .mnt_next
.mnt_fail
pop de
cp 13 ;There is no valid FAT volume on the physical drive
jr z,.mnt_next
cp 10 ;The physical drive is write protected
jr z,.mnt_next
ld a,e
dec a
or %00000011 ;Next drive
inc a
ld e,a
.mnt_next
inc e
ld a,e
cp 'U'
jr nz,mountdrives0
idle_runcmd
OS_SETSYSDRV
ld de,fcb
;jr $
OS_FOPEN
or a
jr nz,execcmd_error
ld hl,tcmdloading
call prtext
OS_NEWAPP
;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000 эютюую яЁшыюцхэш , b=id, a=error
push bc ;b=id
ld a,d
SETPG32KHIGH
push de
push hl
ld hl,cmdbuf
ld de,#c080
ld bc,128
ldir ;command line
pop hl
pop de
call readfile_pages_dehl
ld de,fcb
OS_FCLOSE
pop af ;id
ld e,a
OS_RUNAPP
;яюэшчшЄ№ яЁшюЁшЄхЄ ёхсх
ld e,1
OS_FREEZEAPP
idleloop
;ld a,1
;out (#fe),a
ld a,#fe
in a,(#fe)
bit 3,a ;'c'
jr nz,idleloop
ld a,#7f
in a,(#fe)
bit 2,a ;'m'
jr nz,idleloop
ld a,#fd
in a,(#fe)
bit 2,a ;'d'
jr nz,idleloop
ld e,7
OS_CLS
;jr $
jp idle_runcmd
execcmd_error
ld hl,tcmdnotfound
call prtext
jr idleloop
tcmdnotfound
db "cmd.com not found",#0d,#0a,0
tcmdloading
db "loading cmd.com",#0d,#0a,0
tdrivemounted
db "Drive "
tdrivemounted_drive
db "N mounted",#0d,#0a,0
cmdbuf
;db "cmd autoexec.bat",0
db "autoexec.bat autoexec.bat",0 ;ўЄюс√ яюЄюь тїюфшЄ№ т шэЄхЁръЄштэ√щ Ёхцшь (cmd яЁютхЁ хЄ яхЁтюх ёыютю), шэрўх яЁшф╕Єё яЁюяшёрЄ№ т autoexec.bat ъюьрэфє cmd ш шьхЄ№ фтх чрфрўш cmd (юфэє тшё ∙є■ т юцшфрэшш фЁєуюую cmd)
prtext
prtext0
ld a,(hl)
or a
ret z
push hl
PRCHAR ;testing (351/352t) (was 986/987t)
pop hl
inc hl
jr prtext0
readfile_pages_dehl
ld a,d
SETPG32KHIGH
ld a,#c100/256
ld b,#3f00/128
call cmd_loadpage
or a
ret nz
ld a,e
SETPG32KHIGH
ld a,#c000/256
ld b,#4000/128
call cmd_loadpage
or a
ret nz
ld a,h
SETPG32KHIGH
ld a,#c000/256
ld b,#4000/128
call cmd_loadpage
or a
ret nz
ld a,l
SETPG32KHIGH
ld a,#c000/256
ld b,#4000/128
cmd_loadpage
;out: a=error
;keeps hl,de
push de
push hl
push bc
ld d,a
ld e,0
OS_SETDTA
pop bc
cmd_loadpage0
push bc
ld de,fcb
;jr $
OS_FREAD
pop bc
or a
jr nz,cmd_loadpageq
djnz cmd_loadpage0
cmd_loadpageq
pop hl
pop de
ret
fcb
db 0
fcb_filename
db "cmd com"
ds FCB_sz-1-11
stack
ds 64
endstack