mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
merging with Vasil's sources
This commit is contained in:
parent
209582b50d
commit
361333af09
@ -63,7 +63,7 @@ START:
|
||||
LD A,(IX-1)
|
||||
LD (TASKX),A
|
||||
PUSH IX
|
||||
CALL CRLF
|
||||
;CALL CRLF
|
||||
CALL GETPATH
|
||||
POP IX
|
||||
;
|
||||
@ -417,7 +417,7 @@ COMP002 XOR A
|
||||
;LD C,#FF
|
||||
LD C,A
|
||||
CPIR
|
||||
.loop: ;CPI
|
||||
;.loop: CPI
|
||||
;JP NZ,.loop
|
||||
;
|
||||
|
||||
@ -1286,7 +1286,7 @@ PDIGIT LD DE,10000
|
||||
LD DE,10
|
||||
CALL DIG
|
||||
LD A,L
|
||||
ADD A,#30
|
||||
ADD A,"0" ;#30
|
||||
|
||||
;!TEST
|
||||
;LD (IX+0),A
|
||||
@ -1673,6 +1673,7 @@ VERS: LD C,Dss.Version
|
||||
res 7,(ix+0)
|
||||
ld bc,100 ; 100
|
||||
call .num16
|
||||
|
||||
.decim: ld bc,10 ; 10
|
||||
call .num16
|
||||
ld a,l
|
||||
@ -1680,7 +1681,8 @@ VERS: LD C,Dss.Version
|
||||
jr .num16_exit
|
||||
|
||||
.tmp1__: BYTE 0
|
||||
.num16: ld a,2Fh
|
||||
|
||||
.num16: ld a,'0'-1
|
||||
and a
|
||||
inc a
|
||||
sbc hl,bc
|
||||
|
||||
@ -1 +1 @@
|
||||
43
|
||||
46
|
||||
63
DOS/CURSOR.ASM
Executable file
63
DOS/CURSOR.ASM
Executable file
@ -0,0 +1,63 @@
|
||||
delay_curs equ 11 ; ç áâ®â ¬¨£ ¨ï ªãàá®à
|
||||
|
||||
|
||||
|
||||
cursor: db 3Eh ; ld a,..
|
||||
crFlag: db 0 ; ä« £ ªãàá®à 00-¥â/01-¥áâì
|
||||
cpl
|
||||
ld (crFlag),a
|
||||
; ‚ª«îç¨âì ªãàá®à
|
||||
cursor_on:
|
||||
ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||||
rst 08h
|
||||
ld (curs_posit+1),de
|
||||
xor a
|
||||
ld c,0B4h ; ¯®«ãç¨âì ᨬ¢®«
|
||||
rst 08h
|
||||
ld bc,1BB5h ; b=§ ª®£¥., á=ᨬ¢®« íªà
|
||||
ld a,(crFlag)
|
||||
or a
|
||||
jr z,curs__
|
||||
ld b,1Ah ; ç¥àâ
|
||||
ld a,(D0642) ; ä« £¨ ª« ¢ë
|
||||
bit 1,a ; ¡¨â Ins
|
||||
jr nz,$+4
|
||||
ld b,19h ; ¡«®ª
|
||||
curs__: xor a ; ®¬¥à ®ª
|
||||
rst 08h
|
||||
ld a,1
|
||||
ld (curs_inv_flag),a
|
||||
ld a,delay_curs
|
||||
ret
|
||||
|
||||
; ‚몫îç¨âì ªãàá®à
|
||||
cursor_off:
|
||||
db 3Eh ; ld a,..
|
||||
curs_inv_flag:
|
||||
db 0 ; ä« £ ªãàá®à : 00-¢ëª«/01-¢ª«
|
||||
or a
|
||||
ret z
|
||||
ld a,-1
|
||||
ld (crFlag),a
|
||||
inc a
|
||||
ld (curs_inv_flag),a
|
||||
ld a,delay_curs
|
||||
ld (curs_timer),a
|
||||
curs_posit:
|
||||
ld de,0 ; Y/X ¯®«®¦.
|
||||
bit 7,e
|
||||
ret nz
|
||||
ld c,0B4h ; ¯®«ãç¨âì ᨬ¢®«
|
||||
xor a
|
||||
rst 08h
|
||||
xor a
|
||||
ld bc,1BB5h ; ᨬ¢®« íªà
|
||||
rst 08h
|
||||
ret
|
||||
|
||||
|
||||
; “áâ ®¢¨âì 䮪ãá "Input Line"
|
||||
focus_to_inpline:
|
||||
call cursor_on ; ¢ª«. ªãàá®à
|
||||
ei
|
||||
ret
|
||||
7531
DOS/DOS.ASM
Executable file
7531
DOS/DOS.ASM
Executable file
File diff suppressed because it is too large
Load Diff
91
DOS/DOS.INC
Executable file
91
DOS/DOS.INC
Executable file
@ -0,0 +1,91 @@
|
||||
true equ 1
|
||||
false equ 0
|
||||
|
||||
; ®¬¥à ¢¥àᨨ „Ž‘
|
||||
major_version equ 1 ; ¢¥àá¨ï (0..9)
|
||||
minor_version equ 61 ; ¬®¤¨ä¨ª æ¨ï (0..99)
|
||||
build_version equ 10 ; ¡¨«¤ (0..999)
|
||||
|
||||
; ¬ ªá. ç¨á«® ¤¥áªà¨¯â®à®¢ ä ©«®¢ ¢ á¨á⥬¥
|
||||
max_handles equ 9
|
||||
|
||||
; ¬ ªá. ¤«¨ áâப¨ ¯¥à¥¬¥®© ®ªà㦥¨ï (¨¬ï + § 票¥)
|
||||
maxlen_env_string equ 255
|
||||
|
||||
|
||||
|
||||
|
||||
A0000 equ 0
|
||||
;A0101 equ 0101h ; 257 ?
|
||||
L4000 equ 4000h
|
||||
L403F equ 403Fh ; á⥪
|
||||
LC000 equ 0C000h
|
||||
LC1C0 equ 0C1C0h
|
||||
LC1C8 equ 0C1C8h
|
||||
LC400 equ 0C400h
|
||||
LE400 equ 0E400h ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||||
LFC7F equ 0FC7Fh
|
||||
LFC80 equ 0FC80h
|
||||
LFD00 equ 0FD00h
|
||||
LFDFF equ 0FDFFh
|
||||
LFE00 equ 0FE00h
|
||||
;
|
||||
LFEE0 equ 0FEE0h ; 32 ¡ ©â ®¯¨á â¥«ï ®ª (8..31 § १.)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; Š®¤ë ®è¨¡®ª „Ž‘
|
||||
;
|
||||
EZERO equ 0 ; No error
|
||||
EINVFNC equ 1 ; Invalid function
|
||||
EINVDRV equ 2 ; Invalid drive number
|
||||
ENOFILE equ 3 ; File not found
|
||||
ENOPATH equ 4 ; Path not found
|
||||
EINVHND equ 5 ; Invalid handle
|
||||
EMFILE equ 6 ; Too many open files
|
||||
EEXIST equ 7 ; File already exists
|
||||
EROFILE equ 8 ; File read only
|
||||
EROOT equ 9 ; Root overflow
|
||||
ENOSPACE equ 10 ; No free space
|
||||
ENOEMPTY equ 11 ; Directory not empty
|
||||
ECURDIR equ 12 ; Can't delete current directory
|
||||
EINVMED equ 13 ; Invalid media
|
||||
EUNOPER equ 14 ; Unknown operation (¥¢®§¬. ®¯¥à æ¨ï)
|
||||
EEXISDIR equ 15 ; Directory exist
|
||||
EINVFNAM equ 16 ; Invalid filename
|
||||
EINVEXE equ 17 ; Invalid EXE-file
|
||||
ENSUPEXE equ 18 ; Not supported EXE-file
|
||||
EACCES equ 19 ; Access denied
|
||||
ENORDY equ 20 ; Not ready
|
||||
ESEEK equ 21 ; Seek error
|
||||
ENOSECT equ 22 ; Sector not found
|
||||
ECRC equ 23 ; CRC error
|
||||
EWRTPRT equ 24 ; Write protect
|
||||
EREAD equ 25 ; Read error
|
||||
EWRITE equ 26 ; Write error
|
||||
EDRVFAIL equ 27 ; Drive failure
|
||||
EEXTND28 equ 28 ; Extended error: 28
|
||||
EEXTND29 equ 29 ; Extended error: 29
|
||||
ENOMEM equ 30 ; Not enough memory
|
||||
EINVMEM equ 31 ; Invalid memory block
|
||||
EEXTND32 equ 32 ; Extended error: 32
|
||||
EEXTND33 equ 33 ; Extended error: 33
|
||||
EEXTND34 equ 34 ; Extended error: 34
|
||||
ETMFILE equ 35 ; Too many files in directory (ᯨ᮪ ä ©«®¢)
|
||||
EDEPTH equ 36 ; (᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª)
|
||||
EUABORT equ 37 ; User abort (®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬)
|
||||
EERR38 equ 38 ; 38
|
||||
EERR39 equ 39 ; 39
|
||||
EERR40 equ 40 ; 40
|
||||
EERR41 equ 41 ; 41
|
||||
EERR42 equ 42 ; 42
|
||||
EERR43 equ 43 ; 43
|
||||
EERR44 equ 44 ; 44
|
||||
EERR45 equ 45 ; 45
|
||||
EERR46 equ 46 ; 46
|
||||
EERR47 equ 47 ; 47
|
||||
EERR48 equ 48 ; 48
|
||||
EERR49 equ 49 ; 49
|
||||
EERR50 equ 50 ; 50
|
||||
1003
DOS/KEYB.ASM
Executable file
1003
DOS/KEYB.ASM
Executable file
File diff suppressed because it is too large
Load Diff
874
DOS/MOUSE.ASM
Executable file
874
DOS/MOUSE.ASM
Executable file
@ -0,0 +1,874 @@
|
||||
;===========================================================
|
||||
; ‚¥ªâ®à ¬ë誨
|
||||
;===========================================================
|
||||
MOUSE_vector:
|
||||
bit 7,c
|
||||
jr nz,A32E3 ; c >=80h
|
||||
inc c
|
||||
dec c ; c=0 ¨¨æ. ¬ë誨
|
||||
jr z,init_mouse
|
||||
dec c ; c=1 ¯®ª § âì ¬ëèªã
|
||||
jr z,show_mouse
|
||||
dec c ; c=2 áªàëâì ¬ëèªã
|
||||
jp z,hide_mouse
|
||||
dec c ; c=3 ã§ âì á®áâ. ¬ë誨
|
||||
jp z,get_mouse_status
|
||||
dec c ; c=4 ãáâ. ª®®à¤¨ âë ¬ë誨
|
||||
jp z,set_mouse_coords
|
||||
dec c ; c=5 § £«ãèª
|
||||
jp z,A32DF
|
||||
dec c ; c=6 § £«ãèª
|
||||
jr z,A32DF
|
||||
dec c ; c=7 ãáâ. Y £à ¨æë ¯¥à¥¬. ¬ë誨
|
||||
jp z,set_y_limit
|
||||
dec c ; c=8 ãáâ. X £à ¨æë ¯¥à¥¬. ¬ë誨
|
||||
jp z,set_x_limit
|
||||
dec c ; c=9 § £à㧨âì ªãàá®à ¬ë誨
|
||||
jp z,A3385
|
||||
dec c ; c=0Ah ãáâ. ᨬ¢®«/ âਡãâ ¬ë誨 ¤«ï ⥪áâ. ०¨¬
|
||||
jp z,A341F
|
||||
dec c ; c=0Bh ¯®«ãç¨âì ªãàá®à ¬ë誨
|
||||
jp z,A33CC
|
||||
dec c ; c=0Ch § £«ãèª
|
||||
jr z,A32DF
|
||||
dec c ; c=0Dh § £«ãèª
|
||||
jr z,A32DF
|
||||
dec c ; c=0Eh ¯®«ãç¨âì çã¢á⢨â. ¬ë誨
|
||||
jp z,A342D
|
||||
dec c ; c=0Fh ãáâ. çã¢áâ¢. ¬ë誨
|
||||
jp z,A3428
|
||||
A32DF: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||||
scf
|
||||
ret
|
||||
|
||||
; c >= 80h
|
||||
A32E3: res 7,c
|
||||
inc c
|
||||
dec c ; c=80h Ž¡à ¡®â稪 ¯¯ à â. ¯à¥àë¢ ¨ï ®â ¬ëè¨
|
||||
jp z,A374B
|
||||
dec c ; c=81h ¨ä ¤«ï ¬ë誨 ® ᬥ¥ ०¨¬ íªà
|
||||
jp z,A3700
|
||||
dec c ; c=82h § £«ãèª
|
||||
jr z,A32F5
|
||||
dec c ; c=83h ¯à¨ã¤. ¯¥à¥à¨á®¢ª ¬ë誨
|
||||
jp z,A3760
|
||||
A32F5: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||||
scf
|
||||
ret
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #00. ˆ¨æ¨ «¨§ æ¨ï ¤à ©¢¥à ¬ë誨
|
||||
;-----------------------------------------------------------
|
||||
init_mouse:
|
||||
di
|
||||
ld a,55h
|
||||
out (10h),a
|
||||
ld a,2Dh
|
||||
out (10h),a
|
||||
ld a,0
|
||||
out (1Bh),a
|
||||
ld a,1
|
||||
out (1Bh),a
|
||||
ld a,0
|
||||
out (1Bh),a
|
||||
ld a,3
|
||||
out (1Bh),a
|
||||
ld a,41h
|
||||
out (1Bh),a
|
||||
ld a,4
|
||||
out (1Bh),a
|
||||
ld a,47h
|
||||
out (1Bh),a
|
||||
ld a,5
|
||||
out (1Bh),a
|
||||
ld a,0E0h
|
||||
out (1Bh),a
|
||||
ei
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #01. <20>®ª § âì 㪠§ â¥«ì ¬ë誨
|
||||
;-----------------------------------------------------------
|
||||
show_mouse:
|
||||
push ix
|
||||
push hl
|
||||
push de
|
||||
ex af,af'
|
||||
push af
|
||||
ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||||
ld de,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||||
di
|
||||
call A3524
|
||||
ld a,true
|
||||
ld (enable_mouse_cursor),a ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||||
ei
|
||||
pop af
|
||||
ex af,af'
|
||||
pop de
|
||||
pop hl
|
||||
pop ix
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #02. ‘ªàëâì 㪠§ â¥«ì ¬ë誨
|
||||
;-----------------------------------------------------------
|
||||
hide_mouse:
|
||||
push ix
|
||||
push hl
|
||||
push de
|
||||
ex af,af'
|
||||
push af
|
||||
di
|
||||
xor a ; false
|
||||
ld (enable_mouse_cursor),a ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||||
call A34D7
|
||||
ei
|
||||
pop af
|
||||
ex af,af'
|
||||
pop de
|
||||
pop hl
|
||||
pop ix
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #03. “§ âì á®â®ï¨¥ ¬ë誨
|
||||
; ‚®§¢à é ¥â ª®®à¤¨ âë ¬ë誨 ¨ á®áâ®ï¨¥ ª®¯®ª
|
||||
;-----------------------------------------------------------
|
||||
get_mouse_status:
|
||||
ld hl,(D378C) ; X ª®®à¤¨ â
|
||||
ld de,(D378E) ; Y ª®®à¤¨ â
|
||||
ld a,(D3792) ; 0 bit - «¥¢ ï, 1 bit - ¯à ¢ ï
|
||||
and a
|
||||
ret
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #04. “áâ ®¢¨âì ª®®à¤¨ âë 㪠§ â¥«ï ¬ë誨
|
||||
; ”ãªæ¨ï ¯¥à¥¬¥é ¥â ªãàá®à ¢ § ¤ ë¥ ª®®à¤¨ âë
|
||||
;
|
||||
; ¢å®¤: hl/de = X/Y ª®®à¤¨ âë
|
||||
; ¢ë室: a = ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
;-----------------------------------------------------------
|
||||
set_mouse_coords:
|
||||
push ix
|
||||
push hl
|
||||
push de
|
||||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||||
ld (D378E),de ; Y ª®®à¤¨ â ¬ë誨
|
||||
ex af,af'
|
||||
push af
|
||||
di
|
||||
call A3772
|
||||
ei
|
||||
pop af
|
||||
ex af,af'
|
||||
pop de
|
||||
pop hl
|
||||
pop ix
|
||||
xor a ;?
|
||||
ret
|
||||
|
||||
|
||||
|
||||
A3385: push bc
|
||||
push de
|
||||
push hl
|
||||
push ix
|
||||
;ld a,l
|
||||
;ld (D37A6),a
|
||||
;ld a,h
|
||||
;ld (D37A7),a
|
||||
ld (D37A6),hl; ; è¨à¨ /¢ëá®â áâ५ª¨ ¬ë誨
|
||||
ld c,e
|
||||
ld b,0
|
||||
ld (D379E),bc
|
||||
ld c,d
|
||||
ld (D37A0),bc
|
||||
exx
|
||||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
ld l,b
|
||||
ld h,b
|
||||
add hl,bc
|
||||
dec a
|
||||
jr nz,$-2
|
||||
push hl
|
||||
ld bc,257 ;A0101 ; 257 ?
|
||||
and a
|
||||
sbc hl,bc
|
||||
ccf
|
||||
exx
|
||||
pop bc
|
||||
pop hl
|
||||
ld a,EINVHND ; ª®¤ "¥áãé¥áâ¢. ¤¥áªà. ä ©« "
|
||||
jr c,A33C7
|
||||
ld de,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||||
di
|
||||
ldir
|
||||
xor a ; ª®¤ "Ok"
|
||||
A33C7: pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ei
|
||||
ret
|
||||
|
||||
|
||||
A33CC: push ix
|
||||
exx
|
||||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
ld l,b
|
||||
ld h,b
|
||||
add hl,bc
|
||||
dec a
|
||||
jr nz,$-2
|
||||
push hl
|
||||
ld bc,257 ;A0101 ; 257 ?
|
||||
and a
|
||||
sbc hl,bc
|
||||
ccf
|
||||
exx
|
||||
pop bc
|
||||
pop hl
|
||||
ld a,EINVHND ; ª®¤ "¥áãé¥áâ¢. ¤¥áªà. ä ©« "
|
||||
jr c,A340B
|
||||
ld de,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||||
ex de,hl
|
||||
di
|
||||
ldir
|
||||
;ld a,(D37A6) ;@@
|
||||
;ld l,a
|
||||
;ld a,(D37A7)
|
||||
;ld h,a
|
||||
ld hl,(D37A6); ; è¨à¨ /¢ëá®â áâ५ª¨ ¬ë誨
|
||||
;ld bc,(D379E)
|
||||
;ld e,c
|
||||
;ld bc,(D37A0)
|
||||
;ld d,c
|
||||
ld a,(D379E);
|
||||
ld e,a;
|
||||
ld a,(D37A0);
|
||||
ld d,a;
|
||||
xor a
|
||||
;ld c,a
|
||||
;ld b,a
|
||||
A340B: ei
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #08. “áâ ®¢ª £®à¨§. £à ¨æ ¯¥à¥¬¥é¥¨ï ¬ë誨
|
||||
;
|
||||
; ¢å®¤: hl = ¬¨¨¬ «ì ï
|
||||
; de = ¬ ªá¨¬ «ì ï
|
||||
;-----------------------------------------------------------
|
||||
set_x_limit:
|
||||
ld (D3794),hl
|
||||
ld (D3796),de
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #07. “áâ ®¢ª ¢¥àâ. £à ¨æ ¯¥à¥¬¥é¥¨ï ¬ë誨
|
||||
;
|
||||
; ¢å®¤: hl = ¬¨¨¬ «ì ï
|
||||
; de = ¬ ªá¨¬ «ì ï
|
||||
;-----------------------------------------------------------
|
||||
set_y_limit:
|
||||
ld (D3798),hl
|
||||
ld (D379A),de
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
A341F: ld (D37A2),hl
|
||||
ld (D37A4),de
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
A3428: ld (D379C),hl
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
A342D: ld hl,(D379C)
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
A3432: ld (A348B+1),hl
|
||||
ld (A348E+1),de
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
ld d,e
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
ld e,l
|
||||
in a,(89h)
|
||||
db 0DDh
|
||||
ld h,a
|
||||
in a,(0A2h)
|
||||
db 0DDh
|
||||
ld l,a
|
||||
di
|
||||
ld a,54h ; ®¬¥à áâà.
|
||||
out (0A2h),a
|
||||
ld a,d
|
||||
add a,a
|
||||
add a,a
|
||||
ld l,a
|
||||
ld h,43h ; áâ. à §àï¤ ?
|
||||
in a,(0C9h)
|
||||
rrca
|
||||
and 80h
|
||||
or 1
|
||||
add a,e
|
||||
out (89h),a
|
||||
inc l
|
||||
ld a,(hl)
|
||||
ld bc,(D37A2)
|
||||
and b
|
||||
xor c
|
||||
ld (hl),a
|
||||
inc l
|
||||
ld a,(hl)
|
||||
ld bc,(D37A4)
|
||||
and b
|
||||
xor c
|
||||
ld (hl),a
|
||||
db 0DDh
|
||||
ld a,l
|
||||
out (0A2h),a
|
||||
db 0DDh
|
||||
ld a,h
|
||||
out (89h),a
|
||||
ret
|
||||
|
||||
|
||||
A348B: ld hl,0
|
||||
A348E: ld de,0
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
ld d,e
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
ld e,l
|
||||
in a,(89h)
|
||||
db 0DDh
|
||||
ld h,a
|
||||
in a,(0A2h)
|
||||
db 0DDh
|
||||
ld l,a
|
||||
di
|
||||
ld a,50h
|
||||
out (0A2h),a
|
||||
ld a,d
|
||||
add a,a
|
||||
add a,a
|
||||
ld l,a
|
||||
ld h,43h ; áâ. à §àï¤ ?
|
||||
in a,(0C9h)
|
||||
rrca
|
||||
and 80h
|
||||
or 1
|
||||
add a,e
|
||||
out (89h),a
|
||||
inc l
|
||||
ld a,(hl)
|
||||
ld (hl),a
|
||||
inc l
|
||||
ld a,(hl)
|
||||
ld (hl),a
|
||||
db 0DDh
|
||||
ld a,l
|
||||
out (0A2h),a
|
||||
db 0DDh
|
||||
ld a,h
|
||||
out (89h),a
|
||||
ret
|
||||
|
||||
A34D7: ld a,0
|
||||
bit 7,a
|
||||
jr z,A348B
|
||||
in a,(0E2h)
|
||||
ld b,a
|
||||
in a,(89h)
|
||||
ld c,a
|
||||
push bc
|
||||
ld a,50h
|
||||
out (0E2h),a
|
||||
A34E9: ld hl,0
|
||||
A34EC: ld de,0
|
||||
ld a,e
|
||||
ex af,af'
|
||||
A34F1: ld a,0
|
||||
and 1
|
||||
ld de,LC000
|
||||
jr z,A34FD
|
||||
ld de,LC000+320
|
||||
A34FD: add hl,de
|
||||
A34FE: ld a,0 ; 14 á®åà. ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
db 0DDh
|
||||
ld h,a
|
||||
ex af,af'
|
||||
A3503: ld bc,10
|
||||
out (89h),a
|
||||
ex af,af'
|
||||
ld (A3510+1),hl
|
||||
ld d,h
|
||||
ld e,l
|
||||
ldir
|
||||
A3510: ld hl,0
|
||||
ex af,af'
|
||||
inc a
|
||||
jr z,A351B
|
||||
db 0DDh
|
||||
dec h
|
||||
jr nz,A3503
|
||||
A351B: pop bc
|
||||
ld a,b
|
||||
out (0E2h),a
|
||||
ld a,c
|
||||
out (89h),a
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
A3524: ld a,(D378B)
|
||||
ld (A34D7+1),a
|
||||
bit 7,a
|
||||
jp z,A3432
|
||||
cp 82h ; 130
|
||||
jr nz,A3537
|
||||
srl h
|
||||
rr l
|
||||
A3537: ld ix,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld (D37AA),bc
|
||||
ld (A3503+1),bc
|
||||
ld c,b
|
||||
ld (D37A8),bc
|
||||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
ld (A34FE+1),a
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld (D37AC),bc
|
||||
ld bc,(D37A0)
|
||||
ld a,e
|
||||
sub c
|
||||
ld e,a
|
||||
jr nc,A357B
|
||||
neg
|
||||
ld e,a
|
||||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
sub e
|
||||
A3571: add ix,bc
|
||||
dec e
|
||||
jr nz,A3571
|
||||
ld c,a
|
||||
ld (D37AC),bc
|
||||
A357B: ld bc,(D379E)
|
||||
and a
|
||||
sbc hl,bc
|
||||
jr nc,A359A
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld hl,0
|
||||
and a
|
||||
sbc hl,bc
|
||||
ld (D37A8),hl
|
||||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||||
sub l
|
||||
ld l,a
|
||||
ld (D37AA),hl
|
||||
ld hl,0
|
||||
A359A: ld (A34E9+1),hl
|
||||
ld (A34EC+1),de
|
||||
push hl
|
||||
in a,(0E2h)
|
||||
ld h,a
|
||||
in a,(89h)
|
||||
ld l,a
|
||||
ex (sp),hl
|
||||
ld a,5Ch ; ¢¨¤¥®-áâà ¨æ
|
||||
out (0E2h),a
|
||||
ld a,e
|
||||
ex af,af'
|
||||
in a,(0C9h)
|
||||
ld (A34F1+1),a
|
||||
and 1
|
||||
ld de,LC000
|
||||
jr z,A35BE
|
||||
ld de,LC000+320 ; ç «® 2-£® íªà ?
|
||||
A35BE: add hl,de
|
||||
db 0DDh
|
||||
ld d,h
|
||||
db 0DDh
|
||||
ld e,l
|
||||
ex de,hl
|
||||
ld bc,(D37AC)
|
||||
db 0DDh
|
||||
ld h,c
|
||||
ex af,af'
|
||||
A35CB: ld bc,(D37A8)
|
||||
add hl,bc
|
||||
ld bc,(D37AA)
|
||||
out (89h),a
|
||||
ex af,af'
|
||||
ld (A35DD+1),de
|
||||
ldir
|
||||
A35DD: ld de,0
|
||||
ex af,af'
|
||||
inc a
|
||||
jr z,A35E8
|
||||
db 0DDh
|
||||
dec h
|
||||
jr nz,A35CB
|
||||
A35E8: pop bc
|
||||
ld a,b
|
||||
out (0E2h),a
|
||||
ld a,c
|
||||
out (89h),a
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
A35F1: in a,(1Bh)
|
||||
rrca
|
||||
ret nc
|
||||
in a,(1Ah)
|
||||
ld l,a
|
||||
bit 6,a
|
||||
ccf
|
||||
ret z
|
||||
in a,(1Bh)
|
||||
rrca
|
||||
jr nc,$-3
|
||||
in a,(1Ah)
|
||||
ld e,a
|
||||
bit 6,a
|
||||
ccf
|
||||
ret nz
|
||||
in a,(1Bh)
|
||||
rrca
|
||||
jr nc,$-3
|
||||
in a,(1Ah)
|
||||
ld d,a
|
||||
bit 6,a
|
||||
ccf
|
||||
ret nz
|
||||
ld a,e
|
||||
and 3Fh
|
||||
ld e,a
|
||||
ld a,l
|
||||
and 3
|
||||
rrca
|
||||
rrca
|
||||
or e
|
||||
ld e,a
|
||||
ld a,d
|
||||
and 3Fh
|
||||
ld d,a
|
||||
ld a,l
|
||||
and 0Ch
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
or d
|
||||
ld d,a
|
||||
ld a,l
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
res 6,a
|
||||
jr nc,$+4
|
||||
set 6,a
|
||||
rlca
|
||||
rlca
|
||||
and 3
|
||||
ld (D3792),a ; á®áâ. ª®¯®ª: 0/1 bits - «¥¢ ï/¯à ¢ ï
|
||||
call A36C3
|
||||
;ld a,e ;@@
|
||||
;ld (D3790),a
|
||||
;ld a,d
|
||||
;ld (D3791),a
|
||||
ld (D3790),de
|
||||
scf
|
||||
ret
|
||||
|
||||
|
||||
A364B: ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||||
ld de,(D3790)
|
||||
ld d,0
|
||||
bit 7,e
|
||||
jr nz,A366F
|
||||
add hl,de
|
||||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||||
ex de,hl
|
||||
ld hl,(D3796)
|
||||
and a
|
||||
sbc hl,de
|
||||
jr nc,A3689
|
||||
ld hl,(D3796)
|
||||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||||
jr A3689
|
||||
;
|
||||
A366F: ld a,e
|
||||
neg
|
||||
ld e,a
|
||||
and a
|
||||
sbc hl,de
|
||||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||||
jr c,A3683
|
||||
ld de,(D3794)
|
||||
sbc hl,de
|
||||
jr nc,A3689
|
||||
A3683: ld hl,(D3794)
|
||||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||||
A3689: ld hl,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||||
ld de,(D3791)
|
||||
ld d,0
|
||||
bit 7,e
|
||||
jr nz,A36A9
|
||||
add hl,de
|
||||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||||
ex de,hl
|
||||
ld hl,(D379A) ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
and a
|
||||
sbc hl,de
|
||||
ret nc
|
||||
ld hl,(D379A) ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||||
ret
|
||||
;
|
||||
A36A9: ld a,e
|
||||
neg
|
||||
ld e,a
|
||||
and a
|
||||
sbc hl,de
|
||||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||||
jr c,A36BC
|
||||
ld de,(D3798) ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
sbc hl,de
|
||||
ret nc
|
||||
A36BC: ld hl,(D3798) ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||||
ret
|
||||
|
||||
|
||||
A36C3: ld hl,(D379C)
|
||||
ld a,l
|
||||
or l
|
||||
ret z
|
||||
dec a
|
||||
ret z
|
||||
ld a,e
|
||||
bit 7,a
|
||||
ld b,0FFh
|
||||
jr z,A36D6
|
||||
ld b,7Fh
|
||||
neg
|
||||
A36D6: inc b
|
||||
sub l
|
||||
jr nc,A36D6
|
||||
bit 7,b
|
||||
jr z,A36E4
|
||||
ld a,b
|
||||
res 7,a
|
||||
neg
|
||||
ld b,a
|
||||
A36E4: ld e,b
|
||||
ld a,d
|
||||
bit 7,a
|
||||
ld b,0FFh
|
||||
jr z,A36F0
|
||||
ld b,7Fh
|
||||
neg
|
||||
A36F0: inc b
|
||||
sub h
|
||||
jr nc,A36F0
|
||||
bit 7,b
|
||||
jr z,A36FE
|
||||
ld a,b
|
||||
res 7,a
|
||||
neg
|
||||
ld b,a
|
||||
A36FE: ld d,b
|
||||
ret
|
||||
|
||||
|
||||
A3700: ld (D378B),a
|
||||
or a
|
||||
jr z,A3720
|
||||
cp 1
|
||||
jr z,A3720
|
||||
cp 2 ; 40x32x16 ⥪á⮢ë©
|
||||
jr z,A3723
|
||||
cp 3 ; 80x32x16 ⥪á⮢ë©
|
||||
jr z,A3737
|
||||
bit 7,a
|
||||
jr z,A3720
|
||||
; £à ä. ०¨¬ë íªà
|
||||
;res 7,a ;@@
|
||||
cp 81h ; 320x256x256
|
||||
jr z,A3723
|
||||
cp 82h ; 640x256x16
|
||||
jr z,A3737
|
||||
A3720: xor a
|
||||
scf
|
||||
ret
|
||||
|
||||
; 320x256x256 ०¨¬
|
||||
A3723: ld de,319 ; ¬ ªá. X £à ¨æ
|
||||
A3726: ld hl,0 ; ¬¨. X/Y £à ¨æë
|
||||
call set_x_limit ; ãáâ. X £à ¨æã ¯¥à¥¬. 㪠§ ⥫ï
|
||||
ld de,255 ; ¬ ªá. Y £à ¨æ
|
||||
jp set_y_limit ; ãáâ. Y £à ¨æã ¯¥à¥¬. 㪠§ ⥫ï
|
||||
|
||||
; 640x256x16 ०¨¬
|
||||
A3737: ld de,639 ; ¬ ªá. X £à ¨æ
|
||||
jr A3726
|
||||
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------
|
||||
; ”ãªæ¨ï #80. Ž¡à ¡®â稪 ¯¯ à â. ¯à¥àë¢ ¨ï ®â ¬ëè¨
|
||||
;
|
||||
; <20>® ¯à¨å®¤ã ¯à¥àë¢ ¨ï ®â ¬ëè¨ ¢ë§ë¢ ¥âáï ¤ ï äãªæ¨ï
|
||||
; ¤à ©¢¥à . ‚ á«ãç ¥, ª®£¤ âॡã¥âáï à ¡®â ¯®¤¯à®£à ¬¬ë
|
||||
; ¯à¨ § ¯à¥é¥ëå ¯à¥àë¢ ¨ïå, ¨á¯®«ì§ã©â¥ ¤ ãî äãªæ¨î,
|
||||
; çâ®¡ë ¨§¡¥¦ âì ¯®â¥à¨ ¯ ª¥â®¢ ¤ ëå ®â ¬ëè¨.
|
||||
;-----------------------------------------------------------
|
||||
A374B: in a,(0E2h)
|
||||
ld b,a
|
||||
in a,(89h)
|
||||
ld c,a
|
||||
push bc
|
||||
call A3772
|
||||
call A3765
|
||||
pop bc
|
||||
ld a,b
|
||||
out (0E2h),a
|
||||
ld a,c
|
||||
out (89h),a
|
||||
ret
|
||||
|
||||
|
||||
A3760: call A3765
|
||||
and a
|
||||
ret
|
||||
|
||||
|
||||
A3765: call A35F1
|
||||
ret nc
|
||||
call A364B
|
||||
ld a,0
|
||||
ld (A3776+1),a
|
||||
ret
|
||||
|
||||
|
||||
A3772: db 3Eh ; ld a,..
|
||||
enable_mouse_cursor:
|
||||
db false ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||||
or a
|
||||
ret z ; ¥ ¢ë¢®¤¨âì 㪠§ ⥫ì
|
||||
A3776: ld a,0
|
||||
call A34D7
|
||||
ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||||
ld de,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||||
call A3524
|
||||
ld a,-1
|
||||
ld (A3776+1),a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
D378B: db 3
|
||||
D378C: dw 160 ; X ª®®à¤¨ â ¬ë誨
|
||||
D378E: dw 128 ; Y ª®®à¤¨ â ¬ë誨
|
||||
D3790: db 0
|
||||
D3791: db 0
|
||||
D3792: db 0 ; á®áâ. ª®¯®ª: 0/1 bits - «¥¢ ï/¯à ¢ ï
|
||||
db 0; ; 㦥 ?
|
||||
;
|
||||
D3794: dw 0
|
||||
D3796: dw 319
|
||||
D3798: dw 0 ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
D379A: dw 255 ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||||
|
||||
D379C: dw 0
|
||||
D379E: dw 0
|
||||
D37A0: dw 0
|
||||
;
|
||||
D37A2: dw 0FF00h
|
||||
D37A4: dw 0FF77h
|
||||
;
|
||||
D37A6: db 10 ; è¨à¨ áâ५ª¨ ¬ë誨
|
||||
D37A7: db 14 ; ¢ëá®â áâ५ª¨ ¬ë誨
|
||||
;
|
||||
D37A8: dw 0
|
||||
D37AA: dw 0
|
||||
D37AC: dw 0
|
||||
|
||||
|
||||
|
||||
; ‘â५ª ¬ë誨. Œ áᨢ 10x14 ¡ ©â®¢ + 116 = 256
|
||||
mouse_pointer:
|
||||
db 0,0,-1,-1,-1,-1,-1,-1,-1,-1 ; 1
|
||||
db 0,-2,0,-1,-1,-1,-1,-1,-1,-1 ; 2
|
||||
db 0,-2,-2,0,-1,-1,-1,-1,-1,-1 ; 3
|
||||
db 0,-2,-2,-2,0,-1,-1,-1,-1,-1 ; 4
|
||||
db 0,-2,-2,-2,-2,0,-1,-1,-1,-1 ; 5
|
||||
db 0,-2,-2,-2,-2,-2,0,-1,-1,-1 ; 6
|
||||
db 0,-2,-2,-2,-2,-2,-2,0,-1,-1 ; 7
|
||||
db 0,-2,-2,-2,-2,0,0,0,0,-1 ; 8
|
||||
db 0,-2,-2,0,-2,0,-1,-1,-1,-1 ; 9
|
||||
db 0,-2,0,0,-2,-2,0,-1,-1,-1 ; 10
|
||||
db 0,0,-1,-1,0,-2,0,-1,-1,-1 ; 11
|
||||
db 0,-1,-1,-1,0,-2,-2,0,-1,-1 ; 12
|
||||
db -1,-1,-1,-1,-1,0,0,-1,-1,-1 ; 13
|
||||
db -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ; 14
|
||||
;
|
||||
ds 256-140 ; 116
|
||||
22
DOS/README.RUS
Executable file
22
DOS/README.RUS
Executable file
@ -0,0 +1,22 @@
|
||||
‚¥àá¨î „Ž‘ ®¡®§¢ « ª ª 1.61.
|
||||
“áâ ®¢ª : § ¬¥¨âì ®à¨£¨ «ìë© ä ©« "system.dos".
|
||||
|
||||
|
||||
1. ˆá¯à ¢«¥ ä¨à¬¥ ï ®è¨¡ª , ¯à¨ ª®â®à®© ¯à®¨á室¨«® § ¢¨á ¨¥
|
||||
á¨á⥬ë (¥¯à¥¤áª §ã¥¬®¥ ¯®¢¥¤¥¨¥) ¯à¨ ¯à¥¢ë襨¨ ¬ ªá. ç¨á«
|
||||
®âªàëâëå ¤¥áªà¨¯â®à®¢. ޤ ¦¤ë, ¢® ¢à¥¬¥ ¯®àâ¨à®¢ ¨ï M80.EXE,
|
||||
¨§-§ ¤ ®£® ¡ £ ¨ ª®¥ç® ¥ã¤ 箣® à ᯮ«®¦¥¨ï §¢¥§¤ ¥¡¥,
|
||||
¡ë« á¥á¥ ¢¥áì «®£¨ç¥áª¨© ¤¨áª "C".
|
||||
|
||||
2. <20>®ï¢¨« áì ®¢ ï äãªæ¨ï:
|
||||
|
||||
”ãªæ¨ï #08 (DSS_RESCAN). <20>¥à¥áª ¨à®¢ âì ¤¥¢ ©áë á¨á⥬ë.
|
||||
¢å®¤: ¥â
|
||||
¢ë室: A - ®¬¥à ¯®á«¥¤¥£® «®£. ¤¨áª ¢ á¨á⥬¥
|
||||
|
||||
<EFBFBD>। § ç¥ ¤«ï á®§¤ ⥫¥© RAM-¤¨áª®¢. „«ï ¤®áâ㯠ª á®§¤ ®¬ã
|
||||
RAM-¤¨áªã ¥ 㦮 ¯¥à¥§ £à㦠âì ª®¬¯ìîâ¥à.
|
||||
|
||||
3. ‚ ®â«¨ç¨¨ ®â ®à¨£¨ « , äãªæ¨¨ 0Ah/0Bh (Create file/New create file)
|
||||
¯¥à¥¤ á®§¤ ¨¥¬ ä ©« ¯à®¢¥àïîâ ¯¥à¥¯®«¥¨¥ â ¡«¨æã ᢮¡®¤ëå
|
||||
¤¥áªà¨¯â®à®¢.
|
||||
BIN
DOS/SYSTEM.DOS
Executable file
BIN
DOS/SYSTEM.DOS
Executable file
Binary file not shown.
12
DOS/pr.bat
Executable file
12
DOS/pr.bat
Executable file
@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
..\asmplus.exe dos.asm SYSTEM.DOS
|
||||
if errorlevel 1 goto ERR
|
||||
echo Ok!
|
||||
goto END
|
||||
|
||||
:ERR
|
||||
del system.dos
|
||||
echo ®è¨¡ª¨ ª®¬¯¨«ï樨...
|
||||
|
||||
:END
|
||||
del dos.lst
|
||||
1
DOS/readme.!
Executable file
1
DOS/readme.!
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD>ਠᮧ¤ ¨¨ ä ©« , ¯ ¯ª¨ ¨ ¤à. ®¯¥à 権 á ¯ã⥬ (¤¨áª®¬) - „Ž‘ ¬¥ï¥â ⥪ã騩 ¯ãâì !!!.
|
||||
@ -25,6 +25,24 @@ PCHARS:
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
|
||||
;!TEST FOR LP_PR_LINE_DIR
|
||||
;PUSH HL
|
||||
;CALL CURSOR
|
||||
;LD (.CHAR),A
|
||||
;LD A,(SLOT1)
|
||||
;PUSH AF
|
||||
;LD A,(SLOT0)
|
||||
;LD (SLOT1),A
|
||||
;LD HL,.CHAR + #4000
|
||||
;LD BC,0*256 + BIOS.LP_PR_LINE_DIR
|
||||
;RST ToBIOS
|
||||
;POP AF
|
||||
;LD (SLOT1),A
|
||||
;POP HL
|
||||
;JP .loop
|
||||
;
|
||||
|
||||
CALL PUTCHAR
|
||||
;!TEST CR+LF+SCROLL
|
||||
;CALL CURSOR
|
||||
@ -33,10 +51,16 @@ PCHARS:
|
||||
;CALL Z,PUTCHAR.LFF
|
||||
;
|
||||
JP .loop
|
||||
;.CHAR: DZ " ",0
|
||||
|
||||
|
||||
; PRINT CHAR
|
||||
; A - CHAR
|
||||
PUTCHAR:
|
||||
;LD B,A
|
||||
;CALL CURSOR
|
||||
;LD A,B
|
||||
|
||||
;CP ' '
|
||||
;JR NC,.CHAR
|
||||
CP #0D
|
||||
@ -60,6 +84,12 @@ PUTCHAR:
|
||||
LD A,D
|
||||
OR E
|
||||
RET NZ
|
||||
;LD A,D ; ¢ DE ª®®à¤¨ âë ⥪ã饣® § ª®¬¥áâ
|
||||
;XOR E ; <20>஢¥à塞 ª®®à¤¨ âë #1F:#4F
|
||||
;XOR #50
|
||||
;RET NZ ; ¥á«¨ ¤à㣨¥ - â® ¢ë室
|
||||
;LD E,A
|
||||
;CALL LOCATE
|
||||
;
|
||||
.LFF: PUSH HL ;!FIXIT á®åà ïâì ⥪ã騥 ¯à¥àë¢ ¨ï
|
||||
;PUSH DE
|
||||
|
||||
@ -1 +1 @@
|
||||
173
|
||||
187
|
||||
@ -11,7 +11,7 @@
|
||||
DEFINE NeedSafePort_Y 1
|
||||
DEFINE TABisSPACES 0
|
||||
DEFINE EnoughtOnly_LF 0
|
||||
DEFINE CLASSIC_CURSOR 1
|
||||
DEFINE CLASSIC_CURSOR 0
|
||||
DEFINE SAVE_PATH_MACRO 0
|
||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||
;
|
||||
|
||||
463
SHELL/BATCH.ASM
Normal file
463
SHELL/BATCH.ASM
Normal file
@ -0,0 +1,463 @@
|
||||
; Ž¡à ¡®âª BAT-ä ©«®¢
|
||||
;
|
||||
|
||||
;fhandle
|
||||
BAT_FM: db 0 ; ¤¥áªà. bat-ä ©«
|
||||
;count: db 0 ; ç¨á«® ¯à®ç¨â. ¡ ©â ¨§ ä ©«
|
||||
|
||||
; ä« £ echo-०¨¬
|
||||
echo_mode:
|
||||
db true ; 1/0 on/off
|
||||
|
||||
; ¡ãä¥à bat-ä ©«
|
||||
;T98B9: ds 256
|
||||
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‡ ¯ã᪠bat-ä ©«
|
||||
; ¢å®¤: hl=¨¬ï ä ©«
|
||||
;-------------------------------------------------
|
||||
A83E8: call BATCH
|
||||
jp c,A83DD ; ®è¨¡ª ®âªà. ä ©« (cpp.asm)
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; ¢å®¤: b=ç¨á«® á«®¢ "ZERO".."NINE"
|
||||
MAKE_BATCH_PRM_ARRAY:
|
||||
dec hl
|
||||
.loop: inc hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
ret z
|
||||
cp " "
|
||||
jr z,.loop
|
||||
cp 9 ; Tab
|
||||
jr z,.loop
|
||||
ex de,hl
|
||||
ld (hl),e
|
||||
inc hl
|
||||
ld (hl),d
|
||||
inc hl
|
||||
ex de,hl
|
||||
.B_FIND_SPACE:
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
cp " "+1
|
||||
jr nc,.B_FIND_SPACE
|
||||
ld (hl),0
|
||||
or a
|
||||
ret z
|
||||
djnz .loop
|
||||
ret
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‡ £à㧪 ¨ ¢ë¯®«¥¨¥ BAT-ä ©«
|
||||
; ¢å®¤: hl=¨¬ï ä ©«
|
||||
; ¢ë室: "CF" - ®è¨¡ª ®âªà. ä ©«
|
||||
;-------------------------------------------------
|
||||
BATCH: push hl ; á®åà. ¨¬ï bat-ä ©«
|
||||
ld de,work_buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
call copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
ld hl,work_buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
ld de,BAT_PRM_ARRAY ; â ¡«¨æ 㪠§ â. "ZERO".."NINE"
|
||||
ld b,BAT_PRM_ARRAY.TOTAL ; ç¨á«® á«®¢ "ZERO".."NINE"
|
||||
call MAKE_BATCH_PRM_ARRAY
|
||||
jr nz,.B_ALL_P
|
||||
ld hl,NULL ; ds 2*10
|
||||
ex de,hl
|
||||
.B_CLR_P:
|
||||
ld (hl),e
|
||||
inc hl
|
||||
ld (hl),d
|
||||
inc hl
|
||||
djnz .B_CLR_P
|
||||
ex de,hl
|
||||
.B_ALL_P:
|
||||
pop hl ; ¢®ááâ. ¨¬ï bat-ä ©«
|
||||
ld a,Dss.Open.R ; ç⥨¥
|
||||
ld c,Dss.Open ; ®âªàëâì ä ©«
|
||||
RST ToDSS
|
||||
push af ; á®åà. ª®¤ ®è¨¡ª¨
|
||||
call c,restore_disk_path ; ¢®ááâ. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
;R10
|
||||
CALL Restore_Screen
|
||||
;R10
|
||||
pop af
|
||||
ret c
|
||||
ld (BAT_FM),a ; ¤¥áªà. bat-ä ©«
|
||||
; ¢ë¯®«. ª®¬ ¤ bat-ä ©«
|
||||
call NEWLINE
|
||||
xor a
|
||||
ret
|
||||
|
||||
|
||||
;---------------------------------------------------
|
||||
; ‚믮«¥¨¥ ª®¬ ¤ BAT-ä ©«
|
||||
;---------------------------------------------------
|
||||
NEWLINE:
|
||||
ld de,struct_input_line+5 ;!HARDCODE
|
||||
.ADDBAT: push de
|
||||
call READBAT ; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©« ¢ "work_buffer1"
|
||||
pop de
|
||||
or a ; a=ç¨á«® ¯à®ç¨â. ¡ ©â
|
||||
jr nz,.BATLINE
|
||||
ex de,hl
|
||||
;ld de,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
ld de,struct_input_line+5
|
||||
sbc hl,de
|
||||
jr z,.exit; ;[x] Vasil, ã¡à ¡ £ á ¥§ ªàëâë¬ BAT-ä ©«®¬
|
||||
ld a,l
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨
|
||||
call CMDMODE ; â¥áâ bat-ª®¬ ¤ë "rem","pause"
|
||||
.exit: ld a,(BAT_FM) ; ¤¥áªà. bat-ä ©«
|
||||
ld c,Dss.Close ; § ªàëâì ä ©«
|
||||
RST ToDSS
|
||||
ret
|
||||
;
|
||||
.BATLINE:
|
||||
;ld hl,T99B9 ; ®âªã¤ , 128 ¡ãä¥à (ccp.asm) "work_buffer1"
|
||||
ld hl,work_buffer1
|
||||
.loop: call MOVWORD ; ᪮¯¨à. work_buffer1 -> struct_input_line+5
|
||||
jr c,.ADDBAT
|
||||
ld a,b
|
||||
ld (MOVWORD.count),a ; ®áâ «®áì ¯à®¯ àá¨âì ¯à®ç¨â ëå ¡ ©â®¢
|
||||
push hl
|
||||
ex de,hl
|
||||
;ld de,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
ld de,struct_input_line+5
|
||||
;ld de,work_buffer+256;;
|
||||
sbc hl,de
|
||||
ld a,l
|
||||
;ld (D96AD),a ;; ¤«¨ áâப¨ (inline.asm)
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨
|
||||
call CMDMODE ; â¥áâ bat-ª®¬ ¤ë "rem","pause"
|
||||
;ld de,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
ld de,struct_input_line+5
|
||||
;ld de,work_buffer+256;;
|
||||
pop hl
|
||||
jr .loop
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; —⥨¥ ¤ ëå (hl) -> (de), ¯à¨ ¥®¡å®¤¨¬®áâ¨
|
||||
; ¯®¤ª çª ¨§ ä ©« .
|
||||
;
|
||||
; ¢å®¤: hl=®âªã¤
|
||||
; de=ªã¤
|
||||
;-------------------------------------------------
|
||||
MOVWORD:
|
||||
.count+1: ld a,0 ; (ç¨á«® ¯à®ç¨â. ¡ ©â ¨§ ä ©« )/128
|
||||
ld b,a
|
||||
.loop: ld a,(hl)
|
||||
ld (de),a
|
||||
cp " "
|
||||
jr c,.loop2
|
||||
inc hl
|
||||
inc de
|
||||
djnz .loop
|
||||
scf
|
||||
ret
|
||||
; ¯à®ç¨â âì ¤®¯. ¡«®ª ¨§ ä ©«
|
||||
.loop2: ld a,(hl)
|
||||
cp " "
|
||||
ret nc
|
||||
inc hl
|
||||
djnz .loop2
|
||||
push de
|
||||
call READBAT ; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©«
|
||||
pop de
|
||||
;ld hl,BATBUFF ; 128 ¡ãä¥à (ccp.asm) "work_buffer1"
|
||||
ld hl,work_buffer1
|
||||
ld b,a ; ç¨á«® ¯à®ç¨â. ¡ ©â
|
||||
or a
|
||||
jr nz,.loop2
|
||||
scf
|
||||
ret
|
||||
|
||||
; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©«
|
||||
READBAT:
|
||||
;ld hl,T99B9 ; 128 ¡ãä¥à ¯®¤ ¤ ë¥ (ccp.asm) "work_buffer1"
|
||||
ld hl,work_buffer1
|
||||
ld de,128 ; ᪮«ìª®
|
||||
ld a,(BAT_FM) ; ¤¥áªà. bat-ä ©«
|
||||
ld c,Dss.Read ; ç⥨¥ ä ©«
|
||||
RST ToDSS
|
||||
ld a,e
|
||||
ld (MOVWORD.count),a ; (ç¨á«® ¯à®ç¨â. ¡ ©â ¨§ ä ©« )/128
|
||||
ret
|
||||
|
||||
|
||||
; ’¥áâ bat-ª®¬ ¤ë "rem","pause"
|
||||
CMDMODE:
|
||||
;xor a
|
||||
;ld (D96A6),a ; (inline.asm)
|
||||
call EVALCMD ; (batch.asm)
|
||||
;ld ix,T96AC ; 㦮?? § ª®¬¥â ਫ (inline.asm)
|
||||
;ld hl,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
ld hl,struct_input_line+5
|
||||
;ld hl,work_buffer+256;;
|
||||
ld a,(hl)
|
||||
cp "@" ; 40h
|
||||
jr nz,A8240
|
||||
dec hl
|
||||
;ld hl,struct_input_line+4;;
|
||||
dec (hl)
|
||||
jr z,A825B
|
||||
ld c,(hl) ; ¤«¨ áâப¨
|
||||
inc hl
|
||||
ld b,0
|
||||
;ld hl,work_buffer+256;;
|
||||
ld d,h
|
||||
ld e,l
|
||||
inc hl
|
||||
ldir
|
||||
jr A825B
|
||||
;
|
||||
A8240: ld a,(echo_mode) ; ä« £ echo-०¨¬
|
||||
or a
|
||||
jr z,A825B ; off
|
||||
; ¢ë¢¥á⨠á¨áâ. ¯ãâì ¨ áâபã ᮤ¥à¦¨¬®£® bat-ä ©«
|
||||
;ld de,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
;ld de,struct_input_line+5
|
||||
;call A95DE ; ¢ë¢®¤ íªà . ¯ã⨠á ">" (inline.asm)
|
||||
; ¢ë¢¥á⨠íªà . ¯ãâì ¨ ¢¢¥¤. ª®¬ ¤ã
|
||||
ld c,BIOS.LP_GET_PLACE ; ã§ âì ¯®«®¦. ªãàá®à
|
||||
RST ToBIOS
|
||||
ld (YXpos),de ; Y/X ç «® ª®¬-áâப¨
|
||||
ld (cursor_position),de ; Y/X ¯®§¨æ¨ï ªãàá®à
|
||||
call print_compath ; ¢ë¢¥á⨠¯ãâì + ®¢ ï è¨à¨ ¯®«ï ¢¢®¤
|
||||
ld de,(YXpos) ; Y/X ç «® ª®¬-áâப¨
|
||||
ld c,Dss.Locate ; ãáâ. ¯®«®¦. ªãàá®à
|
||||
RST ToDSS
|
||||
;ld hl,work_buffer+256;;
|
||||
ld hl,struct_input_line+4 ; ¤«¨ áâப¨
|
||||
ld a,(hl)
|
||||
ld b,a
|
||||
inc hl ;+5
|
||||
push bc
|
||||
ld c,BIOS.LP_PRINT_LINE2 ; ¢ë¢®¤ áâப¨ ¡¥§ âਡã⮢
|
||||
RST ToBIOS
|
||||
pop bc ; b=¤«¨ áâப¨
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤ (76..48)
|
||||
sub b
|
||||
ei
|
||||
ret z ; ¯à ¢ë© ªà © íªà
|
||||
jr c,A8250; ; áâப ¡®«ìè¥ è¨à¨ë íªà
|
||||
; § ¯®«¨âì áâப㠤® ª®æ íªà
|
||||
dec a ; çâ®¡ë ¥ áà ¡®â « áªà®««¨£ íªà ;!FIXIT scroll
|
||||
ld b,a ; ç¨á«® ¢ë¢®¤. ᨬ¢®«®¢
|
||||
ld a," " ; ᨬ¢®«
|
||||
ld c,BIOS.LP_PRINT_SYM ; ¢ë¢®¤ ᨬ¢®« ¡¥§ âਡãâ
|
||||
RST ToBIOS
|
||||
ei
|
||||
;!TEST
|
||||
A8250: call newline
|
||||
;
|
||||
;
|
||||
;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||||
;ld a,(struct_input_line+4);-
|
||||
;or a
|
||||
;ret z
|
||||
;call newline
|
||||
;jr A8264
|
||||
;
|
||||
A825B: ;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||||
ld a,(struct_input_line+4)
|
||||
or a
|
||||
ret z
|
||||
;A8264: ld hl,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
;ld hl,struct_input_line+5
|
||||
;dec hl
|
||||
; ã¡à âì ª®æ¥¢ë¥ ¯à®¡¥«ë áâப¨
|
||||
ld hl,struct_input_line+4
|
||||
ld c,(hl) ; hl=¤«¨ áâப¨ (inline.asm)
|
||||
ld b,0
|
||||
inc hl
|
||||
;ld hl,work_buffer+256;;
|
||||
A826C: ld a,(hl)
|
||||
cp " "
|
||||
jr nz,A8276
|
||||
inc hl
|
||||
dec c
|
||||
jr nz,A826C
|
||||
ret
|
||||
;
|
||||
A8276: ld d,h
|
||||
ld e,l
|
||||
add hl,bc
|
||||
ld (hl),b ; 0 ¢ ª®¥æ áâப¨ (¯¥à¢®£® ª®æ. ¯à®¡¥« )
|
||||
sbc hl,bc
|
||||
ld a,c
|
||||
ex af,af'
|
||||
ld a," "
|
||||
cpir
|
||||
jr nz,A8286
|
||||
inc c
|
||||
A8286: ex af,af'
|
||||
sub c
|
||||
ld c,a ; ¤«¨ á«®¢ ¨«¨ áâப¨ ?
|
||||
ld hl,BATLIST ; ª®¬ ¤ë "pause","rem" + dos-ª®¬ ¤ë
|
||||
; de=struct_input_line+5, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
||||
; ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||||
jp A8312
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ¤®«¦ ã¡à âì ª®æ. ¯à®¡¥«ë ¨ ãáâ. ¤«¨ã áâப¨, ¥á«¨ ã१ « áì
|
||||
EVALCMD: xor a
|
||||
ld hl,struct_input_line+4 ;!HARDCODE
|
||||
ld c,(hl)
|
||||
ld b,a
|
||||
inc hl
|
||||
add hl,bc
|
||||
ld (hl),a ; 0 ¢ ª®¥æ áâப¨
|
||||
sbc hl,bc
|
||||
ld de,work_buffer2 ; 256 ¡ãä¥à
|
||||
call EVALSTR
|
||||
ld hl,work_buffer2 ;work_buffer+256
|
||||
ld de,struct_input_line+5 ; ªã¤
|
||||
ld bc,255
|
||||
.loop: ld a,(hl)
|
||||
ldi
|
||||
inc b
|
||||
or a
|
||||
jr nz,.loop
|
||||
dec b
|
||||
ld a,b
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨ (edline.asm)
|
||||
and a
|
||||
ret
|
||||
|
||||
; HL - STRING WITH %VAR%
|
||||
EVALSTR: ld a,(hl)
|
||||
cp "%"
|
||||
jr z,.TVARIABLE
|
||||
.VARL1: ldi
|
||||
or a
|
||||
jr nz,EVALSTR
|
||||
ld bc,0
|
||||
ld (.TVAR_PNT),bc
|
||||
ret
|
||||
;
|
||||
.TVARIABLE:
|
||||
.TVAR_PNT+1: ld bc,0
|
||||
ld a,b
|
||||
or c
|
||||
ld a,"%"
|
||||
ld (.TVAR_PNT),de
|
||||
jr nz,.TVAR1
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
cp "9"+1
|
||||
jr c,.TVAR0
|
||||
.TVAR2: ld a,"%" ; > "9"
|
||||
dec hl
|
||||
jp .VARL1
|
||||
.TVAR0: cp "0"
|
||||
jr c,.TVAR2 ; < "0"
|
||||
; BATCH PARAM %0, %1, %2 ...
|
||||
inc hl
|
||||
push hl
|
||||
ld (.TVAR_PNT),bc
|
||||
sub "0"
|
||||
add a,a
|
||||
ld c,a
|
||||
ld hl,BAT_PRM_ARRAY ; â ¡«¨æ 㪠§ â. "ZERO".."NINE"
|
||||
add hl,bc
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld h,(hl)
|
||||
ld l,a
|
||||
or h
|
||||
jr z,.NOBTP ; NO BATCH PARM
|
||||
call copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
dec de
|
||||
.NOBTP: pop hl
|
||||
jp EVALSTR
|
||||
;
|
||||
.TVAR1: push hl
|
||||
ld h,d
|
||||
ld l,e
|
||||
dec hl
|
||||
and a
|
||||
sbc hl,bc
|
||||
jr z,.TNOVAR
|
||||
ld a,"="
|
||||
ld (de),a
|
||||
inc de
|
||||
xor a
|
||||
ld (de),a
|
||||
ld d,b ; de=¡ãä¥à § ç¥¨ï ¯¥à¥¬.
|
||||
ld e,c
|
||||
ld h,b ; hl=¨¬ï ¯¥à¥¬.
|
||||
ld l,c
|
||||
inc hl
|
||||
ld bc,Dss.Environ.Get*256 + Dss.Environ ; ¯®«ãç¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
.TNOVAR: pop hl
|
||||
inc hl
|
||||
ld bc,0
|
||||
ld (.TVAR_PNT),bc
|
||||
jp EVALSTR
|
||||
|
||||
|
||||
|
||||
; !! <09>¥ ¤¥« âì ®¤ã ª®¬ ¤ã > 256 ᨬ¢®«®¢)) !!
|
||||
;
|
||||
; BAT-ª®¬ ¤ë (¥ ®â¤¥«ïâì ®â ¤®á-ª®¬ ¤)
|
||||
BATLIST: DZ 'PAUSE' : DW cmd_pause ;CPAUSE
|
||||
DZ 'REM' : DW cmd_rem ;CREM
|
||||
;
|
||||
; DSS-ª®¬ ¤ë
|
||||
CMDLIST: DZ 'CD' : DW cmd_chdir ;CCHDIR
|
||||
DZ 'DIR' : DW cmd_dir ;DIR
|
||||
DZ 'ECHO' : DW cmd_echo ;CECHO
|
||||
DZ 'ECHO.' : DW cmd_echoLN
|
||||
DZ 'PATH' : DW cmd_path ;CPATH
|
||||
DZ 'MD' : DW cmd_mkdir ;CMKDIR
|
||||
DZ 'REN' : DW cmd_rename ;CRENAM
|
||||
DZ 'DEL' : DW cmd_del ;CDELET
|
||||
DZ 'RD' : DW cmd_rmdir ;CRMDIR
|
||||
DZ 'SET' : DW cmd_set ;CSET
|
||||
DZ 'TIME' : DW cmd_time ;CTIME
|
||||
DZ 'DATE' : DW cmd_date ;CDATE
|
||||
DZ 'VER' : DW cmd_version ;VERS
|
||||
DZ 'CLS' : DW cmd_cls ;CLS
|
||||
DZ 'CHDIR' : DW cmd_chdir ;CCHDIR
|
||||
DZ 'MKDIR' : DW cmd_mkdir ;CMKDIR
|
||||
DZ 'RENAME' : DW cmd_rename ;CRENAM
|
||||
DZ 'ERASE' : DW cmd_del ;CDELET
|
||||
DZ 'RMDIR' : DW cmd_rmdir ;CRMDIR
|
||||
DZ 'HELP' : DW cmd_help ;HELP
|
||||
DZ 'VERSION' : DW cmd_version ;VERS
|
||||
DZ 'EXIT' : DW cmd_exit ;CEXIT
|
||||
DZ 'REBOOT' : DW cmd_reboot ;REBOOT
|
||||
DB #00
|
||||
|
||||
|
||||
IZERO DB "ZERO",0
|
||||
IONE DB "ONE",0
|
||||
ITWO DB "TWO",0
|
||||
ITHREE DB "THREE",0
|
||||
IFOUR DB "FOUR",0
|
||||
IFIVE DB "FIVE",0
|
||||
ISIX DB "SIX",0
|
||||
ISEVEN DB "SEVEN",0
|
||||
IEIGHT DB "EIGHT",0
|
||||
ININE DB "NINE",0
|
||||
|
||||
BAT_PRM_ARRAY:
|
||||
DW IZERO, IONE, ITWO, ITHREE, IFOUR, IFIVE, ISIX, ISEVEN, IEIGHT, ININE
|
||||
DW 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 10 ç¨á«® á«®¢ "ZERO".."NINE"
|
||||
.TOTAL EQU ($-BAT_PRM_ARRAY)/4
|
||||
DISPLAY "First compilation test: 10 = ",/D, BAT_PRM_ARRAY.TOTAL
|
||||
ASSERT BAT_PRM_ARRAY.TOTAL = 10, "BAT_PRM_ARRAY.TOTAL"
|
||||
NULL: DB 0
|
||||
;TVAR_PNT: DW 0
|
||||
39
SHELL/Commands/CHDIR.ASM
Normal file
39
SHELL/Commands/CHDIR.ASM
Normal file
@ -0,0 +1,39 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; CD, CHDIR. ‘¬¥ ª â «®£
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_chdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
xor a
|
||||
;ld hl,T9186
|
||||
ld hl,work_buffer1;
|
||||
cp (hl)
|
||||
jr nz,A877B
|
||||
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
||||
inc hl
|
||||
ld (hl),"."
|
||||
inc hl
|
||||
ld (hl),0
|
||||
dec hl
|
||||
dec hl
|
||||
A877B: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
||||
RST ToDSS
|
||||
;call c,print_err_message
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
; call newline
|
||||
jp save_disk_path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
||||
; ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||||
; RST ToBIOS
|
||||
; ld (YXpos),de ; Y/X ç «® ª®¬-áâப¨
|
||||
; ld (cursor_position),de ; Y/X ¯®§¨æ¨ï ªãàá®à
|
||||
; ;call print_compath ; ¢ë¢¥á⨠¯ãâì + ®¢ ï è¨à¨ ¯®«ï ¢¢®¤
|
||||
; ;ld de,(YXpos) ; Y/X ç «® ª®¬-áâப¨
|
||||
; ;ld c,84h ; ãáâ. ¯®«®¦. ªãàá®à
|
||||
; ;RST ToBIOS
|
||||
; ret
|
||||
66
SHELL/Commands/CLS.ASM
Normal file
66
SHELL/Commands/CLS.ASM
Normal file
@ -0,0 +1,66 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; CLS. Žç¨áâ¨âì íªà
|
||||
;
|
||||
; Œ®¦® § ¤ âì ®¤¨ à£ã¬¥â - 梥â íªà .
|
||||
; …᫨ à£ã¬¥â ¥ § ¤ , ¨á¯. ¯®-㬮«ç ¨î #07.
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_cls:ex de,hl ; hl=ª®¬-áâப
|
||||
;ld de,T9186 ; ¡ãä¥à ¯®¤ ¯ à ¬¥âà
|
||||
ld de,work_buffer1;
|
||||
push de
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
pop hl
|
||||
jp nc,invalid_param ; "Invalid parametr" (>1 ¯ à ¬.)
|
||||
ld b,7 ; âਡãâ ®ç¨á⪨ ¯®-㬮«ç ¨î
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr z,cls_clear
|
||||
call ascii2byte
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
and 7
|
||||
ld b,a
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr z,cls_clear
|
||||
ld a,b
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
ld b,a
|
||||
ld a,(hl)
|
||||
call ascii2byte
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
or b
|
||||
ld b,a
|
||||
cls_clear:
|
||||
ld a,b
|
||||
ld (color_screen),a ; âਡãâ
|
||||
ld de,0 ; Y/X ¯®«®¦.
|
||||
ld hl,#2050 ; Y/X à §¬¥à
|
||||
ld c,BIOS.LP_CLS_WIN ; ®ç¨áâ¨âì ®ª® (¢ë¢®¤®¬ ¯à®¡¥«®¢)
|
||||
RST ToBIOS
|
||||
; ãáâ. ªãàá®à ¢ Home
|
||||
ld de,0 ; Y/X ¯®«®¦.
|
||||
ld c,Dss.Locate
|
||||
RST ToDSS
|
||||
ret
|
||||
|
||||
|
||||
; ascii -> int
|
||||
ascii2byte:
|
||||
cp "0"
|
||||
ret c
|
||||
cp "9"+1
|
||||
jr c,$+10
|
||||
and 5Fh
|
||||
cp "F"+1
|
||||
ccf
|
||||
ret c
|
||||
sub 7
|
||||
sub "0"
|
||||
or a
|
||||
ret
|
||||
152
SHELL/Commands/DATE.ASM
Normal file
152
SHELL/Commands/DATE.ASM
Normal file
@ -0,0 +1,152 @@
|
||||
; Ž¡à ¡®â稪¨ ª®¬ ¤ DATE ¨ TIME
|
||||
;
|
||||
|
||||
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; DATE. ‚뢮¤ ¨«¨ ãáâ ®¢ª ¤ âë
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_date:
|
||||
ex de,hl ; hl=ª®¬-áâப
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld a,(de)
|
||||
or a
|
||||
jr z,cmd_dt1
|
||||
call A893C
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
xor a
|
||||
cp h
|
||||
jp nz,invalid_param ; "Invalid parametr"
|
||||
ld a,31
|
||||
cp l
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
ld b,l
|
||||
push bc
|
||||
call A893C
|
||||
pop bc
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
xor a
|
||||
cp h
|
||||
jp nz,invalid_param ; "Invalid parametr"
|
||||
ld a,12
|
||||
cp l
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
ld c,l
|
||||
push bc
|
||||
call A893C
|
||||
push hl
|
||||
ld c,Dss.SysTime
|
||||
RST ToDSS
|
||||
pop ix
|
||||
pop de
|
||||
ld c,Dss.SetTime
|
||||
RST ToDSS
|
||||
cmd_dt1:ld c,Dss.SysTime
|
||||
RST ToDSS
|
||||
push ix
|
||||
push de
|
||||
ld a,d ; ç¨á«®
|
||||
ld hl,PRM1 ; ªã¤
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
ld a,"."
|
||||
ld (hl),a
|
||||
inc hl
|
||||
pop de
|
||||
ld a,e ; ç¨á«®
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
ld a,"."
|
||||
ld (hl),a
|
||||
inc hl
|
||||
push hl
|
||||
pop ix
|
||||
pop hl
|
||||
call A8964
|
||||
ld de,2 ; ¨¤¥ªá "Current date: %1"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
|
||||
|
||||
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; TIME. ‚뢮¤ ¨«¨ ãáâ ®¢ª ¢à¥¬¥¨
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_time:
|
||||
ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld a,(de)
|
||||
or a
|
||||
jr z,cmd_tm1
|
||||
call A893C
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
xor a
|
||||
cp h
|
||||
jp nz,invalid_param ; "Invalid parametr"
|
||||
ld a,23
|
||||
cp l
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
ld b,l
|
||||
push bc
|
||||
call A893C
|
||||
pop bc
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
xor a
|
||||
cp h
|
||||
jp nz,invalid_param ; "Invalid parametr"
|
||||
ld a,59
|
||||
cp l
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
ld c,l
|
||||
push bc
|
||||
call A893C
|
||||
pop bc
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
xor a
|
||||
cp h
|
||||
jp nz,invalid_param ; "Invalid parametr"
|
||||
ld a,59
|
||||
cp l
|
||||
jp c,invalid_param ; "Invalid parametr"
|
||||
push bc
|
||||
ld a,l
|
||||
push af
|
||||
ld c,Dss.SysTime
|
||||
RST ToDSS
|
||||
pop bc
|
||||
pop hl
|
||||
ld c,Dss.SetTime
|
||||
RST ToDSS
|
||||
cmd_tm1:ld c,Dss.SysTime
|
||||
RST ToDSS
|
||||
push bc
|
||||
push hl
|
||||
ld a,h ; ç¨á«®
|
||||
ld hl,PRM1 ; ªã¤
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
ld a,":"
|
||||
ld (hl),a
|
||||
inc hl
|
||||
pop de
|
||||
ld a,e ; ç¨á«®
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
ld a,":"
|
||||
ld (hl),a
|
||||
inc hl
|
||||
pop af ; ç¨á«®
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
xor a
|
||||
ld (hl),a ; ¢ ª®¥æ áâப¨
|
||||
ld de,3 ; ¨¤¥ªá "Current time: %1"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
16
SHELL/Commands/DEL.ASM
Normal file
16
SHELL/Commands/DEL.ASM
Normal file
@ -0,0 +1,16 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; DEL, ERASE. “¤ «¨âì ä ©«
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_del:ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
ld hl,work_buffer1;
|
||||
ld c,Dss.Delete
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
555
SHELL/Commands/DIR.ASM
Normal file
555
SHELL/Commands/DIR.ASM
Normal file
@ -0,0 +1,555 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; DIR. ‚뢮¤ á¯¨áª ä ©«®¢ ¨ ¯ ¯®ª
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_dir: push de
|
||||
ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
ld (disk+1),a ; ®¬¥à ¤¨áª
|
||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||
pop de
|
||||
ld hl,0
|
||||
ld (D88DC),hl
|
||||
ld (D88DE),hl
|
||||
ld (D88E0),hl
|
||||
ex de,hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr nz,$+5 ; § ¤ ¬ ᪠¨¬¥
|
||||
ld hl,mask_fname ; "*.*"
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1 ; 80
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ä ©«
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld a,37h ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||
ld bc,0*256 + Dss.F_First ; f_first (ä®à¬ â 11)
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
; %1
|
||||
;ld a,(system_path) ; ¡ãä¥à ¯®«®£® á¨áâ. ¯ãâ¨
|
||||
;ld (T90F6),a
|
||||
;ld a,":"
|
||||
;ld (T90F7),a
|
||||
;xor a
|
||||
;ld (T90F8),a
|
||||
ld a,(screen_path) ; ¤¨áª
|
||||
ld hl,PRM1
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ld (hl),":"
|
||||
inc hl
|
||||
ld (hl),0
|
||||
; %2
|
||||
ld hl,serial_string ; áâப á¥à¨©®£® ®¬¥à ¤¨áª
|
||||
ld de,PRM2 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;call print_sys_path ; ¢ë¢®¤ á¨áâ. ¯ã⨠íªà
|
||||
; %3
|
||||
ld hl,screen_path ; íªà . ¯ãâì
|
||||
ld de,PRM3 ; 16 ¡ãä¥à
|
||||
;ld a,(hl)
|
||||
;ldi ; ᪮¯¨à. áâபã
|
||||
;or a
|
||||
;jr nz,$-4
|
||||
call copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;
|
||||
ld de,0 ; ¨¤¥ªá "Volume in drive %1 has no label..."
|
||||
call MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
; 横« ¢ë¢®¤ á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
A882C: ;ld hl,T9186 ; à ¡. ¡ãä¥à
|
||||
ld hl,work_buffer1 ; 80
|
||||
ld de,33
|
||||
add hl,de
|
||||
call A88E2
|
||||
;ld ix,T9186
|
||||
ld ix,work_buffer1 ; 80
|
||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||
and 10h ; ¯ ¯ª ?
|
||||
jr nz,A8866 ; ¤
|
||||
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
||||
ld hl,(D88DC)
|
||||
inc hl
|
||||
ld (D88DC),hl
|
||||
ld e,(ix+30)
|
||||
ld d,(ix+31)
|
||||
ld hl,(D88E0)
|
||||
exx
|
||||
ld e,(ix+28)
|
||||
ld d,(ix+29)
|
||||
ld hl,(D88DE)
|
||||
add hl,de
|
||||
exx
|
||||
adc hl,de
|
||||
exx
|
||||
ld (D88DE),hl
|
||||
exx
|
||||
ld (D88E0),hl
|
||||
A8866: ;ld de,T9186 ; à ¡. ¡ãä¥à
|
||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
||||
RST ToDSS
|
||||
jr nc,A882C ; § ¤ ¢ 横«
|
||||
jr A8872 ; ª®¥æ ᯨ᪠, ¤¥áïâ. ¢ë¢®¤
|
||||
|
||||
|
||||
; „¥áïâ¨çë© ¢ë¢®¤
|
||||
A8872: ld hl,(D88DC)
|
||||
ld ix,PRM1 ; ¡ãä¥à
|
||||
call A8964
|
||||
ld hl,(D88DE) ; ¬«. à §àï¤
|
||||
exx
|
||||
ld hl,(D88E0) ; áâ. à §àï¤
|
||||
exx
|
||||
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
ld hl,T8B37 ; "0"
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,A8892
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
A8892: ld de,T8B46 ; "0 000 000 000"
|
||||
ld hl,T8B2E ; "0000000000"
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
ld de,PRM2 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
ld de,9 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
|
||||
|
||||
|
||||
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
A88E2: ld bc,8
|
||||
ld de,PRM1 ; ¡ãä¥à
|
||||
ldir
|
||||
xor a
|
||||
ld (de),a
|
||||
ld de,PRM2 ; ªã¤
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ld (de),a
|
||||
;ld ix,T9186
|
||||
ld ix,work_buffer1
|
||||
call A89A4 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
||||
call A89FA ; ¢ë¢¥á⨠¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||
call A8A19 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
ld de,10 ; ¨¤¥ªá "%1 %2 %3 %4 %5"
|
||||
jp MESSAGE ; ¢ë¢®¤ áâப¨
|
||||
|
||||
|
||||
|
||||
; ‚뢥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
||||
A89A4: ld a,(ix+32)
|
||||
ld hl,T8B38 ; "<DIR> "
|
||||
and 10h ; ¯ ¯ª ?
|
||||
jr nz,A89F4 ; ¤
|
||||
ld l,(ix+28) ; ¬«. à §àï¤
|
||||
ld h,(ix+29)
|
||||
exx
|
||||
ld l,(ix+30) ; áâ. à §àï¤
|
||||
ld h,(ix+31)
|
||||
exx
|
||||
push ix
|
||||
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
ld hl,T8B37
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,A89CD
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
A89CD: ld de,T8B46 ; "0 000 000 000"
|
||||
ld hl,T8B2E ; "0000000000"
|
||||
ldi
|
||||
ld a," "
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
pop ix
|
||||
A89F4: ld de,PRM3 ; 16 ¡ãä¥à
|
||||
jp ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
|
||||
|
||||
|
||||
; ‘ª®¯¨à®¢ âì ¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||
A89FA: ld b,(ix+25)
|
||||
ld c,(ix+24)
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
call A8A53 ; ¢ë¢®¤ ¢ ¡ãä¥à ¤ âë
|
||||
ld (hl),0
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
ld de,PRM4 ; 16 ªã¤
|
||||
ld a,(hl)
|
||||
cp "0"
|
||||
jr nz,$+4
|
||||
ld (hl)," "
|
||||
jp ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
|
||||
|
||||
|
||||
; ‘ª®¯¨à®¢ âì ¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
A8A19: ld b,(ix+22)
|
||||
ld c,(ix+23)
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
call A8A38 ; ᪮¯¨à. ¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
ld (hl),0
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
ld de,PRM5 ; 80 ¡ãä¥à áâப¨
|
||||
ld a,(hl)
|
||||
cp "0"
|
||||
jr nz,$+4
|
||||
ld (hl)," "
|
||||
jp ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
|
||||
|
||||
; ¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
A8A38: srl c
|
||||
rr b
|
||||
srl c
|
||||
rr b
|
||||
srl c
|
||||
rr b
|
||||
srl b
|
||||
srl b
|
||||
ld a,c
|
||||
call A8A7E
|
||||
ld (hl),":" ; à §¤¥«. ¢à¥¬¥¨
|
||||
inc hl
|
||||
ld a,b
|
||||
jr A8A7E
|
||||
|
||||
|
||||
; ¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||
A8A53: ld a,c
|
||||
and 1Fh
|
||||
push bc
|
||||
call A8A7E
|
||||
ld (hl),"." ; à §¤¥«. ¤ âë
|
||||
inc hl
|
||||
pop bc
|
||||
ld a,c
|
||||
srl b
|
||||
rla
|
||||
rla
|
||||
rla
|
||||
rla
|
||||
and 0Fh
|
||||
call A8A7E
|
||||
ld (hl),"." ; à §¤¥«. ¤ âë
|
||||
inc hl
|
||||
ld a,b
|
||||
add a,80
|
||||
cp 100
|
||||
jr c,A8A7E
|
||||
A8A75: sub 100
|
||||
cp 100
|
||||
jr nc,A8A75
|
||||
A8A7E: ld c,2Fh
|
||||
inc c
|
||||
sub 10
|
||||
jr nc,$-3
|
||||
add a,10
|
||||
add a,"0"
|
||||
ld (hl),c
|
||||
inc hl
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ret
|
||||
|
||||
|
||||
; „¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
A8A8F: ld ix,T8B2E ; "0000000000"
|
||||
exx
|
||||
ld de,3B9Ah
|
||||
exx
|
||||
ld de,0CA00h
|
||||
call A8B15 ; 1,000,000,000
|
||||
exx
|
||||
ld de,05F5h
|
||||
exx
|
||||
ld de,0E100h
|
||||
call A8B15 ; 100,000,000...999,999,999
|
||||
exx
|
||||
ld de,98h
|
||||
exx
|
||||
ld de,9680h
|
||||
call A8B15 ; 10,000,000...99,999,999
|
||||
exx
|
||||
ld de,0Fh
|
||||
exx
|
||||
ld de,4240h
|
||||
call A8B15 ; 1,000,000...9,999,999
|
||||
exx
|
||||
ld de,1
|
||||
exx
|
||||
ld de,86A0h
|
||||
call A8B15 ; 100,000...999,999
|
||||
exx
|
||||
ld de,0
|
||||
exx
|
||||
ld de,10000
|
||||
call A8B15 ; 10,000...99,999
|
||||
exx
|
||||
ld de,0
|
||||
exx
|
||||
ld de,1000
|
||||
call A8B15 ; 1,000...9,999
|
||||
exx
|
||||
ld de,0
|
||||
exx
|
||||
ld de,100
|
||||
call A8B15 ; 100..999
|
||||
exx
|
||||
ld de,0
|
||||
exx
|
||||
ld de,10
|
||||
call A8B15 ; 10..99
|
||||
ld a,l
|
||||
add a,"0"
|
||||
ld (ix+0),a
|
||||
inc ix
|
||||
ld hl,T8B2E ; "0000000000"
|
||||
ld de,2030h ; " ","0"
|
||||
A8B04: ld a,(hl)
|
||||
cp e
|
||||
jr nz,A8B0D
|
||||
ld (hl),d
|
||||
inc hl
|
||||
jr A8B04
|
||||
;
|
||||
A8B0D: ld hl,T8B37 ; "0"
|
||||
ld a,(hl)
|
||||
cp d
|
||||
ret nz
|
||||
ld (hl),e
|
||||
ret
|
||||
|
||||
|
||||
A8B15: xor a
|
||||
A8B16: inc a
|
||||
sbc hl,de
|
||||
exx
|
||||
sbc hl,de
|
||||
exx
|
||||
jp nc,A8B16
|
||||
add hl,de
|
||||
exx
|
||||
adc hl,de
|
||||
exx
|
||||
dec a
|
||||
add a,"0"
|
||||
ld (ix+0),a
|
||||
inc ix
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
D88DC: dw 0
|
||||
D88DE: dw 0
|
||||
D88E0: dw 0
|
||||
|
||||
|
||||
|
||||
T8B2E: db "000000000"
|
||||
T8B37: db "0"
|
||||
T8B38: db "<DIR> ",0
|
||||
T8B46: db "0 000 000 000",0
|
||||
db 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;!FIXIT ¯¥à¥¥á⨠¢ DSS - FN #04: GET_BPB
|
||||
; ¯à®ç¨â âì BPB ¤¨áª
|
||||
read_disk_info:
|
||||
disk: ld a,0 ; á®åà. ®¬¥à ¤¨áª
|
||||
ld c,1 ; open device
|
||||
rst 18h
|
||||
jr c,get_inf_data_err ;!FIXIT ¥â ®¡à ¡®â稪 ®è¨¡ª
|
||||
ld a,(disk+1)
|
||||
ld de,work_buffer ; ¡ãä¥à
|
||||
ld c,4 ; get BPB
|
||||
rst 18h
|
||||
push af
|
||||
ld a,(disk+1) ; ®¬¥à ¤¨áª
|
||||
ld c,2 ; close device
|
||||
rst 18h
|
||||
pop af
|
||||
jr c,get_inf_data_err ;!FIXIT ¥â ®¡à ¡®â稪 ®è¨¡ª¨
|
||||
;
|
||||
get_inf_data_err:
|
||||
;
|
||||
|
||||
; ‘¥à¨©ë© ®¬¥à «®£. ¤¨áª
|
||||
ld hl,(work_buffer+41) ; áâ.ç áâì
|
||||
ld de,serial_string ; xxxx-xxxx
|
||||
call hex16
|
||||
ld a,"-"
|
||||
ld (de),a
|
||||
inc de
|
||||
ld hl,(work_buffer+39) ; ¬«.ç áâì
|
||||
call hex16
|
||||
;
|
||||
; Œ¥âª ¤¨áª
|
||||
ld a,(disk+1) ; ®¬¥à ¤¨áª
|
||||
cp 2 ; ¬¥ìè¥ "C:" ?
|
||||
jr nc,get_inf_data1 ; ¬¥âª ¢ BPB
|
||||
; floppy, ¬¥âª - ª ª § ¯¨áì ä ©«
|
||||
ld c,Dss.ChDisk ; ãáâ. ¤¨áª
|
||||
RST ToDSS
|
||||
; ãáâ. ª®à¥ì ¤¨áª
|
||||
ld hl,root_path ; "\",0
|
||||
ld c,Dss.ChDir
|
||||
RST ToDSS
|
||||
; ¯®¨áª ¬¥âª¨
|
||||
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
||||
ld de,work_buffer1 ; ªã¤
|
||||
ld a,8 ; âਡãâ ¬¥âª¨ ⮬
|
||||
ld bc,0*256 + Dss.F_First ; f_first, ä®à¬ â 11
|
||||
RST ToDSS
|
||||
push af
|
||||
call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
||||
pop af
|
||||
jr c,no_volume_label ; ¬¥âª¨ ¥â
|
||||
ld hl,work_buffer1+33 ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||
jr volume_label
|
||||
;
|
||||
get_inf_data1: ;!FIXIT â ª â ¬ ¯à®¡¥«ë áâ®ïâì ¬®£ãâ, ¥á«¨ ¬¥âª ª®à®ç¥ 11 ᨬ¢®«®¢
|
||||
ld hl,work_buffer+53 ; ª®¥æ ¬¥âª¨ ¢ BPB
|
||||
ld a,(hl)
|
||||
cp " " ; ¥áâì ¬¥âª ?
|
||||
ld hl,work_buffer+43 ; ç «® ¬¥âª¨ ¢ BPB
|
||||
jr nz,volume_label ; ¤
|
||||
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
||||
; ¥â ¬¥âª¨
|
||||
no_volume_label: ;!FIXIT ᤥ« âì ç¥à¥§ PRM %4
|
||||
ld hl,volume_string1 ; "has no label "
|
||||
ld de,MSG0.volume_string ; ªã¤
|
||||
ld bc,14
|
||||
ldir
|
||||
ret
|
||||
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
||||
; ¥áâì ¬¥âª
|
||||
volume_label:
|
||||
ex de,hl
|
||||
ld hl,MSG0.volume_string ; ªã¤
|
||||
ld (hl),"i"
|
||||
inc hl
|
||||
ld (hl),"s"
|
||||
inc hl
|
||||
ld (hl)," "
|
||||
inc hl
|
||||
ex de,hl
|
||||
; ᪮¯¨à. ¨¬ï ¬¥âª¨
|
||||
ld bc,11 ; ¬ ªá. ¤«¨ ¬¥âª¨
|
||||
ld a,(hl)
|
||||
cp " "+1
|
||||
jr nc,$+6
|
||||
inc hl
|
||||
dec c
|
||||
jr $-7
|
||||
ld a,11
|
||||
sub c
|
||||
ldir
|
||||
ld b,a
|
||||
or a ; ¤«¨ ¬¥âª¨ 11 ᨬ¢. ?
|
||||
ret z ; ¤
|
||||
; ¤®¯®«¨âì 墮áâ. ¯à®¡¥« ¬¨
|
||||
ld (de),a
|
||||
inc de
|
||||
djnz $-2
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
|
||||
; de=¡ãä¥à
|
||||
; hl=ç¨á«®
|
||||
hex16: ld a,h
|
||||
call hex8
|
||||
ld a,l
|
||||
; ¢ë¢®¤ "a"
|
||||
hex8: push af
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
call $+4
|
||||
pop af
|
||||
and 0Fh
|
||||
add a,90h
|
||||
daa
|
||||
adc a,40h
|
||||
daa
|
||||
ld (de),a
|
||||
inc de
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
; ¬ áª ä ©«®¢
|
||||
mask_fname:
|
||||
db "*.*",0
|
||||
|
||||
; ª®à¥ì ¤¨áª
|
||||
root_path:
|
||||
db '\',0
|
||||
|
||||
|
||||
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
serial_string:
|
||||
db "xxxx-xxxx",0
|
||||
|
||||
volume_string1: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
||||
db "has no label " ; 14
|
||||
58
SHELL/Commands/ECHO.ASM
Normal file
58
SHELL/Commands/ECHO.ASM
Normal file
@ -0,0 +1,58 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; ECHO. ‚뢮¤ á®®¡é¥¨© íªà
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_echo:
|
||||
ex de,hl
|
||||
ld a,(hl) ; ª®¬-áâப
|
||||
or a
|
||||
jr z,A862E ; ¡¥§ à£ã¬¥â®¢
|
||||
ex de,hl
|
||||
; â¥áâ à£ã¬¥â®¢ "on","off"
|
||||
push de
|
||||
ld b,3 ; ¤«¨ áà ¢¥¨ï
|
||||
ld hl,T8C21 ; "ON",0
|
||||
call A874E ; áà ¢¨âì áâப¨
|
||||
pop de
|
||||
ld a,true ; ०¨¬ "on"
|
||||
jr z,A864B
|
||||
push de
|
||||
ld b,4 ; ¤«¨ áà ¢¥¨ï
|
||||
ld hl,T8C24 ; "OFF",0
|
||||
call A874E ; áà ¢¨âì áâப¨
|
||||
pop hl
|
||||
ld a,false ; ०¨¬ "off"
|
||||
jr z,A864B
|
||||
; à£ã¬¥âë ¥ "on","off"
|
||||
A8623: ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
jp newline
|
||||
|
||||
; <20>®ª § âì ⥪. ०¨¬ íå
|
||||
A862E: ld a,(echo_mode) ; ä« £ echo-०¨¬
|
||||
or a
|
||||
ld de,7 ; ¨¤¥ªá "on"
|
||||
jr nz,$+5 ; false
|
||||
ld de,8 ; ¨¤¥ªá "off"
|
||||
call A8BC6 ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
ld de,6 ; ¨¤¥ªá "Echo is %1"
|
||||
jp MESSAGE
|
||||
;
|
||||
A864B: ld (echo_mode),a ; ä« £ echo-०¨¬
|
||||
ret
|
||||
|
||||
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; Š®¬ ¤ "ECHO." ‚áâ ¢ª ¯ãá⮩ áâப¨ íªà
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_echoLN:
|
||||
ex de,hl
|
||||
ld a,(hl) ; ª®¬-áâப
|
||||
or a
|
||||
jp z,newline ; ¡¥§ à£ã¬¥â®¢
|
||||
jr A8623 ; ¢ë¢¥á⨠à£ã¬¥âë
|
||||
12
SHELL/Commands/EXIT.ASM
Normal file
12
SHELL/Commands/EXIT.ASM
Normal file
@ -0,0 +1,12 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; EXIT. ‚ë室 ¢ த¨â¥«ì᪨© ¯à®æ¥áá
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_exit:
|
||||
.TASKX+1: ld a,2 ; ã஢¥ì ⥪ã饣® 襫«
|
||||
dec a
|
||||
dec a
|
||||
ret z ; a=2 (primary 襫«)
|
||||
pop hl ; ¢®ááâ. ¡ « á á⥪ (ã¡à âì ¢ë§®¢ A82E7 ¢ £«. 横«¥ ®¡®«®çª¨)
|
||||
jp back_to_parent_process ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||
8
SHELL/Commands/HELP.ASM
Normal file
8
SHELL/Commands/HELP.ASM
Normal file
@ -0,0 +1,8 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; HELP. ‚뢮¤ íªà ¯®¬®é¨
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_help:
|
||||
ld de,11 ; ¨¤¥ªá "COMMANDS: ..."
|
||||
jp MESSAGE
|
||||
17
SHELL/Commands/MKDIR.ASM
Normal file
17
SHELL/Commands/MKDIR.ASM
Normal file
@ -0,0 +1,17 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; MD, MKDIR. ‘®§¤ âì ¯ ¯ªã
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_mkdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,work_buffer1;
|
||||
ld c,Dss.MkDir ; á®§¤ âì ¯ ¯ªã
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
49
SHELL/Commands/PATH.ASM
Normal file
49
SHELL/Commands/PATH.ASM
Normal file
@ -0,0 +1,49 @@
|
||||
T858C: db "PATH=",0 ; áâப
|
||||
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; PATH. “áâ ®¢ª ¯ãâ¨
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_path:
|
||||
ld a,(de) ; ª®¬-áâப
|
||||
or a
|
||||
jr z,A85B9 ; à£ã¬¥â®¢ ¥ ¡ë«®
|
||||
; ãáâ. ¯ãâì
|
||||
inc de
|
||||
cp 9 ; Tab
|
||||
jr z,cmd_path
|
||||
cp " "+1
|
||||
jr c,cmd_path
|
||||
dec de
|
||||
ex de,hl
|
||||
dec hl
|
||||
ld (hl),"="
|
||||
dec hl
|
||||
ld (hl),"H"
|
||||
dec hl
|
||||
ld (hl),"T"
|
||||
dec hl
|
||||
ld (hl),"A"
|
||||
dec hl
|
||||
ld (hl),"P" ; ç «® áâப¨ ¨¬¥¨
|
||||
ld bc,Dss.Environ.Set*256 + Dss.Environ ; ãáâ ./㤠«¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
|
||||
; <20>®ª § âì á¨áâ¥¬ë© ¯ãâì
|
||||
A85B9: ;ld de,T9186 ; ªã¤
|
||||
ld de,work_buffer1;
|
||||
ld hl,T858C ; ¨¬ï ¯¥à¥¬¥®© "PATH="
|
||||
ld bc,Dss.Environ.Get*256 + Dss.Environ ; ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ld hl,T858C ; "PATH=",0
|
||||
ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; áâப
|
||||
ld hl,work_buffer1;
|
||||
ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
jp newline
|
||||
11
SHELL/Commands/PAUSE.ASM
Normal file
11
SHELL/Commands/PAUSE.ASM
Normal file
@ -0,0 +1,11 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; PAUSE. <20> ã§ (¢ bat-ä ©«¥)
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_pause:
|
||||
ld de,4 ; ¨¤¥ªá "Press any key to continue ..."
|
||||
call MESSAGE ; ¢ë¢®¤ áâப¨
|
||||
ld c,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
RST ToDSS
|
||||
ret
|
||||
6
SHELL/Commands/REM.ASM
Normal file
6
SHELL/Commands/REM.ASM
Normal file
@ -0,0 +1,6 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; REM. Š®¬¬¥â ਩ (¢ bat-ä ©«¥)
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_rem:ret
|
||||
23
SHELL/Commands/REN.ASM
Normal file
23
SHELL/Commands/REN.ASM
Normal file
@ -0,0 +1,23 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; REN, RENAME. <20>¥à¥¨¬¥®¢ âì ä ©«
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_rename:
|
||||
ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld de,T9206
|
||||
ld de,work_buffer+256;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
;ld de,T9206
|
||||
ld hl,work_buffer1;
|
||||
ld de,work_buffer+256;
|
||||
ld c,Dss.Rename
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
17
SHELL/Commands/RMDIR.ASM
Normal file
17
SHELL/Commands/RMDIR.ASM
Normal file
@ -0,0 +1,17 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; RD, RMDIR. “¤ «¨âì ¯ ¯ªã
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_rmdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,work_buffer1;
|
||||
ld c,Dss.RmDir ; 㤠«¨âì ¯ ¯ªã
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
10
SHELL/Commands/Reboot.asm
Normal file
10
SHELL/Commands/Reboot.asm
Normal file
@ -0,0 +1,10 @@
|
||||
;R12
|
||||
cmd_reboot: DI
|
||||
LD C,BIOS.FullInit
|
||||
RST ToBIOS
|
||||
LD BC,2*256 + BIOS.REINIT
|
||||
RST ToBIOS
|
||||
|
||||
DI
|
||||
HALT
|
||||
;R12
|
||||
35
SHELL/Commands/SET.ASM
Normal file
35
SHELL/Commands/SET.ASM
Normal file
@ -0,0 +1,35 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; SET. “áâ ®¢¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_set:ld a,(de) ; ª®¬-áâப
|
||||
or a
|
||||
jr z,A85EE ; ¯ãáâ ï
|
||||
; ãáâ. ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
inc de
|
||||
cp 9
|
||||
jr z,cmd_set
|
||||
cp " "+1
|
||||
jr c,cmd_set
|
||||
dec de
|
||||
ex de,hl
|
||||
ld bc,Dss.Environ.Set*256 + Dss.Environ
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
|
||||
; <20>®ª § âì á¨á⥬®¥ ®ªà㦥¨¥
|
||||
A85EE: ;ld hl,T9186 ; ªã¤
|
||||
ld hl,work_buffer1;
|
||||
ld bc,Dss.Environ.Read*256 + Dss.Environ ; ¯®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
ld hl,work_buffer1;
|
||||
A85F8: ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
call newline
|
||||
ld a,(hl)
|
||||
or a ; ª®¥æ á¨áâ. ®ªà㦥¨ï ?
|
||||
jr nz,A85F8 ; ¥â
|
||||
ret
|
||||
84
SHELL/Commands/VER.ASM
Normal file
84
SHELL/Commands/VER.ASM
Normal file
@ -0,0 +1,84 @@
|
||||
;///////////////////////////////////////////////////
|
||||
;
|
||||
; VER, VERSION. ‚뢮¤ ¢¥àᨨ „Ž‘
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_version:
|
||||
LD C,Dss.Version
|
||||
RST ToDSS
|
||||
LD L,D
|
||||
LD H,E
|
||||
LD DE,PRM1
|
||||
CALL .Set_Ver_to_PRM ; set DSS version
|
||||
;R13
|
||||
LD HL,256*CONSOLE_MODF + CONSOLE_VERS
|
||||
LD BC,CONSOLE_BUILD
|
||||
LD DE,PRM2
|
||||
CALL .Set_Ver_to_PRM ; set Shell version
|
||||
;R13
|
||||
LD DE,VERSMSG
|
||||
JP MESSAGE
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
.num_ver:
|
||||
.num_mod:
|
||||
ld ix,.tmp1__
|
||||
res 7,(ix+0)
|
||||
jr .decim
|
||||
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
.num_build:
|
||||
ld ix,.tmp1__
|
||||
res 7,(ix+0)
|
||||
ld bc,100 ; 100
|
||||
call .num16
|
||||
|
||||
.decim: ld bc,10 ; 10
|
||||
call .num16
|
||||
ld a,l
|
||||
add a,"0"
|
||||
jr .num16_exit
|
||||
|
||||
.tmp1__: BYTE 0
|
||||
|
||||
.num16: ld a,'0'-1
|
||||
and a
|
||||
inc a
|
||||
sbc hl,bc
|
||||
jr nc,$-3
|
||||
add hl,bc
|
||||
cp "0"
|
||||
jr z,$+6
|
||||
set 7,(ix+0)
|
||||
bit 7,(ix+0)
|
||||
ret z
|
||||
.num16_exit:
|
||||
ld (de),a ; á®åà. ¢ ¡ãä¥à¥
|
||||
inc de
|
||||
ret
|
||||
;
|
||||
; ‚室:
|
||||
; L - ®¬¥à ¢¥àᨨ (0..9)
|
||||
; H - ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
; BC - ®¬¥à ¡¨«¤ (0..999)
|
||||
; DE - ®¬¥à ¯ à ¬¥âà
|
||||
.Set_Ver_to_PRM:
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
LD H,0
|
||||
CALL .num_ver ;decim2 ®¬¥à ¢¥àᨨ (0..9)
|
||||
LD A,'.'
|
||||
LD (DE),A
|
||||
INC DE
|
||||
POP HL
|
||||
LD L,H
|
||||
LD H,0
|
||||
CALL .num_mod ;decim2 ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
POP HL
|
||||
LD A,'.'
|
||||
LD (DE),A
|
||||
INC DE
|
||||
CALL .num_build ;decim3 ®¬¥à ¡¨«¤ (0..999)
|
||||
XOR A
|
||||
LD (DE),A
|
||||
RET
|
||||
;
|
||||
1006
SHELL/EDLINE.ASM
Normal file
1006
SHELL/EDLINE.ASM
Normal file
File diff suppressed because it is too large
Load Diff
309
SHELL/ERROR.ASM
Normal file
309
SHELL/ERROR.ASM
Normal file
@ -0,0 +1,309 @@
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: a=®¬¥à ®è¨¡ª¨
|
||||
;-------------------------------------------------
|
||||
print_err_message:
|
||||
ld e,a
|
||||
ld d,0
|
||||
inc de
|
||||
ld hl,ERR0 ; ¬ áᨢ áâப
|
||||
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
||||
call A8BCD ; ©â¨ áâபã
|
||||
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
call newline
|
||||
jp newline
|
||||
|
||||
|
||||
|
||||
; ‚뢮¤ áâப¨ ®è¨¡ª¨
|
||||
;A850D:
|
||||
invalid_param:
|
||||
ld de,5 ; ¨¤¥ªá "Invalid parametr"
|
||||
jr MESSAGE
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
;-------------------------------------------------
|
||||
MESSAGE:
|
||||
call A8BC6 ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
jp PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
;jp A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||||
|
||||
|
||||
; <20> ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
; ¢ë室: hl=áâப
|
||||
A8BC6: inc de
|
||||
ld hl,MSG0 ; ç «® ¬ áᨢ áâப
|
||||
ld bc,MSG0.Size ; à §¬¥à ¬ áᨢ
|
||||
A8BCD: xor a
|
||||
cpir
|
||||
ret po
|
||||
ret nz
|
||||
;R11
|
||||
XOR A
|
||||
CP (HL)
|
||||
JR Z,.no_mess
|
||||
;
|
||||
dec de
|
||||
ld a,d
|
||||
or e
|
||||
jr nz,A8BCD
|
||||
ret
|
||||
.no_mess: INC HL
|
||||
RET
|
||||
|
||||
;[x] ¨á¯à ¢«¥ ¡ £ á ¢ë室®¬ § ¯à¥¤¥«ë ¡ãä¥à PRM. —ãâì ®¯â¨¬¨§¨à®¢
|
||||
;----------------------------------------------------------------------;
|
||||
; ”®à¬ â¨à®¢ ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ®¢ª®© à£ã¬¥â®¢ ¢¬¥áâ® %1-%9
|
||||
; ¢å®¤: hl=¡ãä¥à áâப¨
|
||||
;----------------------------------------------------------------------;
|
||||
PRINTZ: ld a,(hl)
|
||||
inc hl
|
||||
or a
|
||||
ret z
|
||||
cp '%'
|
||||
jr z,.check_PRM
|
||||
.char: ld c,Dss.PutChar
|
||||
RST ToDSS
|
||||
jp PRINTZ
|
||||
.bad_PRM:
|
||||
ld a,'%'
|
||||
jp .char
|
||||
.check_PRM:
|
||||
ld a,(hl)
|
||||
cp '9'+1
|
||||
jr nc,.bad_PRM
|
||||
inc hl
|
||||
sub '1'
|
||||
push hl
|
||||
;!TEST
|
||||
;ld l,a
|
||||
;ld h,0
|
||||
;add hl,hl ;1+1=2
|
||||
;add hl,hl ;2+2=4
|
||||
;add hl,hl ;4+4=8
|
||||
;add hl,hl ;8+8=16 à §¬¥à ®â¤¥«ì®£® ¯®¤¡ãä¥à
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
LD L,A
|
||||
LD H,0
|
||||
;
|
||||
ld bc,PRM1 ; ¡ãä¥à
|
||||
add hl,bc
|
||||
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
|
||||
RST ToDSS
|
||||
pop hl
|
||||
jp PRINTZ
|
||||
|
||||
|
||||
|
||||
;!FIXIT ¯¥à¥¥á⨠ª ®¡é¨¬ ¡ãä¥à ¬ ª ª ã ¬¥ï
|
||||
; ¡ãä¥àë à£ã¬¥â®¢ ª®¬ ¤®© áâப¨
|
||||
PRM1: BLOCK 16,0 ; à£ã¬¥â %1
|
||||
PRM2: BLOCK 16,0 ; à£ã¬¥â %2
|
||||
PRM3: BLOCK 16,0 ; à£ã¬¥â %3
|
||||
PRM4: BLOCK 16,0 ; à£ã¬¥â %4
|
||||
PRM5: BLOCK 16,0 ; à£ã¬¥â %5
|
||||
PRM6: BLOCK 16,0 ; à£ã¬¥â %6
|
||||
PRM7: BLOCK 16,0 ; à£ã¬¥â %7
|
||||
PRM8: BLOCK 16,0 ; à£ã¬¥â %8
|
||||
PRM9: BLOCK 16,0 ; à£ã¬¥â %9
|
||||
|
||||
|
||||
|
||||
;!TODO ¥ § ¡ëâì § ¬¥¨âì æ¨äàë í⨠¬¥âª¨
|
||||
DIR1MSG EQU 0
|
||||
VERSMSG EQU 1
|
||||
DATEMSG EQU 2
|
||||
TIMEMSG EQU 3
|
||||
PAUSMSG EQU 4
|
||||
ILLGMSG EQU 5
|
||||
ECHOMSG EQU 6
|
||||
ON__MSG EQU 7
|
||||
OFF_MSG EQU 8
|
||||
DIR2MSG EQU 9
|
||||
DIR3MSG EQU 10
|
||||
HELPMSG EQU 11
|
||||
|
||||
MSG0: db 0
|
||||
; 0
|
||||
db "Volume in drive %1 "
|
||||
.volume_string: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
||||
db "has no label ",0Dh,0Ah ;0
|
||||
db "Volume Serial Number is %2",0Dh,0Ah
|
||||
db 0Dh,0Ah,"Directory of %3",0Dh,0Ah,0Ah,0
|
||||
; 1
|
||||
db "Estex DSS version %1. Console version %2.",CR,LF,0 ;R13
|
||||
; 2
|
||||
db "Current date: %1",0Dh,0Ah,0 ;2
|
||||
db "Current time: %1",0Dh,0Ah,0 ;3
|
||||
db "Press any key to continue . . .",0Dh,0Ah,0Ah,0 ;4
|
||||
db "Invalid parametr",0Dh,0Ah,0 ;5
|
||||
db "Echo is %1",0Dh,0Ah,0 ;6
|
||||
db "on",0 ;7
|
||||
db "off",0 ;8
|
||||
db " %1 file(s) %2 bytes",0Dh,0Ah,0Ah,0 ;9
|
||||
; 10 FILENAME EXT SIZE DATE TIME
|
||||
db "%1 %2 %3 %4 %5",0Dh,0Ah,0 ;10
|
||||
; 11
|
||||
DB "COMMANDS:",CR,LF,CR,LF
|
||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||||
;R11
|
||||
BYTE 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.Size EQU $-MSG0
|
||||
|
||||
/*
|
||||
MSG0: DB 0
|
||||
DB "Volume in drive %1 has no label",CR,LF ; !FIXIT
|
||||
DB "Volume Serial number is %2",CR,LF
|
||||
DB "Directory of %3",CR,LF,CR,LF,0
|
||||
DB "Estex DSS: Version %1",CR,LF,0 ;R02
|
||||
DB "Current date: %1",CR,LF,0
|
||||
DB "Current time: %1",CR,LF,0
|
||||
DB "Press any key to continue . . .",CR,LF,0
|
||||
DB "Invalid parametr",CR,LF,0
|
||||
DB "Echo is %1",CR,LF,0
|
||||
DB "on",0
|
||||
DB "off",0
|
||||
DB " %1 file(s) %2 bytes",CR,LF,CR,LF,0
|
||||
; FILENAME EXT SIZE DATE TIME
|
||||
DB "%1 %2 %3 %4 %5",CR,LF,0
|
||||
DB "COMMANDS:",CR,LF,CR,LF
|
||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||||
;R11
|
||||
BYTE 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.Size EQU $-MSG0
|
||||
|
||||
*/
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT äãªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ç «¥ 䨫ìâà ¯® ®¬¥à ¬ ¨ ¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
|
||||
ERR0: DB #00
|
||||
DZ "Bad command or file name"
|
||||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
DZ "Too many open files" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
DZ "File already exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "Not enough memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||||
DZ "Extended error 32"
|
||||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||||
DZ "Extended error 34"
|
||||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||||
DZ "Operation aborted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
;R11
|
||||
DB 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||||
DZ "Unknown error"
|
||||
;
|
||||
.Size EQU $-ERR0
|
||||
;-----------------------------------------------------------------------
|
||||
/*
|
||||
; ‘®®¡é¥¨ï ®è¨¡®ª „Ž‘
|
||||
ERR0: db 0
|
||||
db "Bad command or file name",0 ;0
|
||||
db "Invalid function",0 ;1
|
||||
db "Invalid drive number",0 ;2
|
||||
db "File not found",0 ;3
|
||||
db "Path not found",0 ;4
|
||||
db "Invalid handle",0 ;5
|
||||
db "Too many open files",0 ;6
|
||||
db "File already exist",0 ;7
|
||||
db "File read only",0 ;8
|
||||
db "Root overflow",0 ;9
|
||||
db "No free space",0 ;10
|
||||
db "Directory not empty",0 ;11
|
||||
db "Can't delete current directory",0 ;12
|
||||
db "Invalid media",0 ;13
|
||||
db "Unknown operation",0 ;14
|
||||
db "Directory exist",0 ;15
|
||||
db "Invalid filename",0 ;16
|
||||
db "Invalid EXE-file",0 ;17
|
||||
db "Not supported EXE-file",0 ;18
|
||||
db "Access denied",0 ;19
|
||||
db "Not ready",0 ;20
|
||||
db "Seek error",0 ;21
|
||||
db "Sector not found",0 ;22
|
||||
db "CRC error",0 ;23
|
||||
db "Write protect",0 ;24
|
||||
db "Read error",0 ;25
|
||||
db "Write error",0 ;26
|
||||
db "Drive failure",0 ;27
|
||||
db "Extended error 28",0 ;28
|
||||
db "Extended error 29",0 ;29
|
||||
db "Not enough memory",0 ;30
|
||||
db "Invalid memory block",0 ;31
|
||||
db "Extended error 32",0 ;32
|
||||
db "Extended error 33",0 ;33
|
||||
db "Extended error 34",0 ;34
|
||||
db "Too many files in directory",0 ;35 ᯨ᮪ ä ©«®¢
|
||||
db "36",0 ;36 (᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª)
|
||||
db "User abort",0 ;37 User abort (®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬)
|
||||
db "38",0 ;38
|
||||
db "39",0 ;39
|
||||
db "40",0 ;40
|
||||
db "41",0 ;41
|
||||
db "42",0 ;42
|
||||
db "43",0 ;43
|
||||
db "44",0 ;44
|
||||
db "45",0 ;45
|
||||
db "46",0 ;46
|
||||
db "47",0 ;47
|
||||
db "48",0 ;48
|
||||
db "49",0 ;49
|
||||
db "50",0 ;50
|
||||
.Size EQU $-ERR0
|
||||
*/
|
||||
34
SHELL/README.txt
Normal file
34
SHELL/README.txt
Normal file
@ -0,0 +1,34 @@
|
||||
‘®àæë à ¡®ç¨¥!. <20>à ªâ¨ç¥áª¨ ¨ç¥£® ¥ ã¡¨à « ¨§ ¨å, á«ãç © ¢ë«¥§ ¨ï
|
||||
£«îª®¢.
|
||||
Š®¬ ¤ DIR ¢ë¢®¤¨â ⥯¥àì ¬¥âªã ¨ á¥à¨©¨ª ¤¨áª®¢.
|
||||
|
||||
|
||||
bat-ª®¬ ¤ë:
|
||||
PAUSE
|
||||
REM
|
||||
|
||||
¤®á-ª®¬ ¤ë:
|
||||
CD,CHDIR
|
||||
CLS
|
||||
DATE,TIME
|
||||
DEL,ERASE
|
||||
DIR
|
||||
ECHO,ECHO.
|
||||
EXIT
|
||||
HELP
|
||||
MD,MKDIR
|
||||
PATH
|
||||
REN,RENAME
|
||||
RD,RMDIR
|
||||
SET
|
||||
VER,VERSION
|
||||
|
||||
|
||||
<EFBFBD>¥à¥¬¥é¥¨¥ ¯® ¨áâ®à¨¨ ª®¬ ¤:
|
||||
|
||||
Esc - á¡à®á¨âì ⥪ãéãî áâபã
|
||||
Ins - ᬥ ०¨¬ ¢¢®¤ (¢áâ ¢ª /§ ¬¥ )
|
||||
ªãàá. ª« ¢¨è¨ ¢¢¥àå/¢¨§ - ¯à®ªàã⪠¨áâ®à¨¨
|
||||
PageUp - ¢ ç «® ¨áâ®à¨¨
|
||||
PageDown - ¢ ª®¥æ ¨áâ®à¨¨
|
||||
Ctrl+Del - áâ¥à¥âì ¨áâ®à¨î
|
||||
510
SHELL/SHELL.ASM
Normal file
510
SHELL/SHELL.ASM
Normal file
@ -0,0 +1,510 @@
|
||||
; <20>®á«¥¤ïï । ªæ¨ï: 22.10.2006
|
||||
;
|
||||
|
||||
|
||||
; - ˆá¯à ¢«¥ ä¨à¬. ¡ £, ¯à¨ ª®â®à®¬ áâப ¢ bat-ä ©«¥, ¤«¨¥¥ è¨à¨ë
|
||||
; íªà , ®¡à¥§ « áì ¯® è¨à¨¥ íªà ¨ ®áâ ⮪ áâப¨ ¥ ¢ë¢®¤¨«áï.
|
||||
; - ˆá¯à ¢«¥ ä¨à¬. ¡ £, ¯à¨ ª®â®à®¬ ¢ ª®¬ ¤¥ "dir" áâப ¢ë¢®¤¨¬®£®
|
||||
; ¯ã⨠¨¬¥« ¬ ªá. 15 ᨬ¢®«®¢.
|
||||
; - <20>®ä¨ªá¥® ¥¢¥à®¥ ¨§¬¥¥¨¥ ¤¨áª /¯ã⨠¯®á«¥ ®è¨¡®ª ¢ë¯®«¥¨ï ª®¬ ¤.
|
||||
; - „®¡ ¢«¥ ª®¬ ¤ "ECHO." ¤«ï ¢áâ ¢ª¨ ¯ãá⮩ áâப¨.
|
||||
; - Š®¬ ¤ DIR ¢ë¢®¤¨â ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª®¢.
|
||||
;
|
||||
;
|
||||
|
||||
|
||||
includelua 'Shared_includes/lua/Functions.lua'
|
||||
include 'shared_includes/constants/bios_equ.inc'
|
||||
include 'shared_includes/constants/dss_equ.inc'
|
||||
include 'SHELL/version.inc'
|
||||
|
||||
;
|
||||
; Program EQU section
|
||||
;---------------------------------------------------------------------[]
|
||||
CR EQU 13
|
||||
LF EQU 10
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
true equ 1
|
||||
false equ 0
|
||||
|
||||
work_buffer1 equ entry - (256+128) ; 2-© à ¡. ¡ãä¥à ;!FIXIT ¯¥à¥¥á⨠¢ ª®¥æ
|
||||
work_buffer2 equ entry - 256 ; 3-© à ¡. ¡ãä¥à ;!FIXIT ¯¥à¥¥á⨠¢ ª®¥æ
|
||||
|
||||
|
||||
|
||||
|
||||
org 7F00h
|
||||
|
||||
db "EX" ; exe ID
|
||||
db 45h ; exe ⨯
|
||||
db 0 ; exe ¢¥àá¨ï
|
||||
dw 512 ; 512, ¬«. ᬥé. ª®¤
|
||||
dw 0 ; áâ. ᬥé. ª®¤
|
||||
dw 0 ; end-beg, ¯¥à¢¨çë© § £àã§ç¨ª
|
||||
dw 0,0,0 ; १¥à¢
|
||||
dw entry ; ¤à¥á § £à㧪¨ ª®¤
|
||||
dw shell ; ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï
|
||||
dw 0C000h ; ¤à¥á á⥪
|
||||
ds 490 ; १¥à¢
|
||||
|
||||
|
||||
; ‚¥àá¨ï/Œ®¤¨ä¨ª æ¨ï/<2F>¨«¤ 襫«
|
||||
entry: db "0.01.003" ;!FIXIT ¯¥à¥¥á⨠¢ ª®¥æ
|
||||
|
||||
;==============================================================
|
||||
; ’®çª ¢å®¤ ¢ ˜¥««
|
||||
;==============================================================
|
||||
shell:
|
||||
;!TODO merge: ªâ¨¢¨à®¢ âì ª®£¤ ¡ãä¥àë ¡ã¤ãâ ç¥à¥§ áâàãªâãàã, ¥ ã«ï¬¨
|
||||
;LD HL,WORK_BUFFERS
|
||||
;LD DE,WORK_BUFFERS+1
|
||||
;LD BC,BUFFERS_STRUCT-1
|
||||
;LD (HL),0
|
||||
;LDIR
|
||||
;
|
||||
|
||||
; á®åà. ã஢¥ì ⥪. 襫«
|
||||
ld a,(ix-1)
|
||||
ld (cmd_exit.TASKX),a
|
||||
push ix
|
||||
call save_disk_path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
pop hl ; hl=ix
|
||||
;
|
||||
; ’¥áâ ®¯æ¨¨ § ¯ãáª á ¬®£® 襫«
|
||||
call GET_CMD
|
||||
ld a,(RUNMODE) ; ¡¨â-ä« £¨ ®¯æ¨©
|
||||
bit 7,a ; "P" 7-© ¡¨â (¨¤¥â ¢ë§®¢ ¨§ boot-§ £àã§ç¨ª )
|
||||
jr nz,FPRIMAR
|
||||
bit 5,a ; "S" 5-© ¡¨â (§ ¯ã᪠2-© ª®¯¨¨ 襫« )
|
||||
;jp nz,option_s
|
||||
jr nz,run_shell
|
||||
bit 4,a ; "C" 4-© ¡¨â (¢ë¯®«¨âì bat-ä ©«)
|
||||
jr nz,option_c
|
||||
bit 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë)
|
||||
jr z,back_to_parent_process
|
||||
; ¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë
|
||||
call CMDMODE ; (batch.asm) ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||||
call save_disk_path ; ã§ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
;
|
||||
; ‚¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||
back_to_parent_process:
|
||||
ld bc,0*256 + Dss.Exit
|
||||
RST ToDSS
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; ޝæ¨ï "S". ‡ ¯ã᪠2-© ª®¯¨¨ 襫« . <20>¥§ ®âà ¡®âª¨ AUTOEXEC.BAT.
|
||||
; Œ®¦® ¢ë©â¨ ¯® EXIT.
|
||||
;---------------------------------------------------------------
|
||||
; option_s:
|
||||
; call cmd_version ; ¢¥àá¨ï „Ž‘
|
||||
; jr run_shell
|
||||
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; ޝæ¨ï "C". ‚믮«¨âì BAT-ä ©«.
|
||||
; <20>®á«¥ ¢ë¯®«¥¨ï ä ©« , ¢®§¢à é ¥âáï ¢ த¨â¥«ì᪨© ¯à®æ¥áá.
|
||||
;---------------------------------------------------------------
|
||||
option_c:
|
||||
;ld hl,T96AE ; ¨¬ï bat-ä ©« , 256 ¡ãä¥à (inline.asm)
|
||||
;ld hl,work_buffer+256;;
|
||||
ld hl,struct_input_line+5 ; ¨¬ï bat-ä ©«
|
||||
call BATCH ; ®¡à ¡®âª bat-ä ©« (batch.asm)
|
||||
call save_disk_path ; ã§ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
jr back_to_parent_process ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; ޝæ¨ï "P". ‡ ¯ã᪠ª®¯¨¨ 襫« . ‘ ®âà ¡®âª®© AUTOEXEC.BAT.
|
||||
; ‘ ¥© ¨¤¥â ¢ë§®¢ 襫« ¨§ boot-§ £àã§ç¨ª .
|
||||
; Œ®¦® ¢ë©â¨ ¯® EXIT, ® ¥ ¨§ § ¯ã饮£® boot-§ £àã§ç¨ª®¬.
|
||||
;---------------------------------------------------------------
|
||||
FPRIMAR:
|
||||
ld c,Dss.CTRLKey ; ã§ âì á®áâ. ª« ¢ë ¢ ¤ ë© ¬®¬¥â
|
||||
RST ToDSS
|
||||
ld hl,autoexec_fname ; ¨¬ï ä ©« "system.bat"
|
||||
ld a,b
|
||||
and #C0 ; ¦ âë Shift-ë ?
|
||||
call z,BATCH ; ¥â, ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||||
;==============================================================
|
||||
; ‡ ¯ã᪠ª®¯¨¨ 襫«
|
||||
;==============================================================
|
||||
run_shell:
|
||||
call newline
|
||||
run_shell_loop:
|
||||
;call A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||||
; ¢ë¢¥á⨠⥪.á¨áâ. ¯ãâì ¨ ¢®©â¨ ¢ áâபã । ªâ¨à®¢ ¨ï
|
||||
call save_disk_path ; ã§ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||
run_shell_loop1:
|
||||
call input_line
|
||||
call newline ; ®¢ãî áâபã
|
||||
ld a,(struct_input_line+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
or a
|
||||
jr z,run_shell_loop1 ; ¯ãáâ ï
|
||||
; <20> àᨣ ¨ ¢ë¯®«¥¨¥ ª®¬ ¤
|
||||
call A82E7
|
||||
jr run_shell_loop ; § ¤ ¢ 横«
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ’¥áâ ®¯æ¨© 襫«
|
||||
; ¢å®¤: hl= ¤à¥á ª®¬-áâப¨
|
||||
GET_CMD:
|
||||
ld e,(hl) ; ¤«¨ áâப¨
|
||||
inc hl
|
||||
ld d,0
|
||||
ex de,hl ; hl=¤«¨ áâப¨, de=áâப
|
||||
add hl,de
|
||||
; ã¡à âì ª®æ¥¢ë¥ ¯à®¡¥«ë
|
||||
dec hl
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr z,$-4
|
||||
inc hl
|
||||
ld (hl),0 ; ¢ ª®¥æ ª®¬-áâப¨
|
||||
.NEXTPRM:
|
||||
ex de,hl ; hl=⥪. ¤à¥á ¢ áâப¥
|
||||
.SKIPSP:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
cp " "
|
||||
ret c
|
||||
jr z,.SKIPSP
|
||||
dec hl
|
||||
cp '/' ; ®¯æ¨ï
|
||||
jr nz,.PROCESS
|
||||
ld de,work_buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«. ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
push af
|
||||
ex de,hl
|
||||
ld hl,work_buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
inc hl
|
||||
call set_option_flag ; ãáâ. ¡¨âë ä« £®¢
|
||||
pop af
|
||||
jr nc,.NEXTPRM
|
||||
ret
|
||||
; ãáâ. ¡¨â-ä« £
|
||||
.PROCESS:
|
||||
ld a,(RUNMODE)
|
||||
set 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë) ;!HARDCODE
|
||||
ld (RUNMODE),a
|
||||
; ᪮¯¨à. ¯ à ¬¥âà ¨§ ª®¬-áâப¨
|
||||
; ¢ ¡ãä¥à áâப¨ । ªâ¨à®¢ ¨ï
|
||||
;copy_to_input_line:
|
||||
ld iy,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
push hl
|
||||
call clear_inpline ; ®¡ã«¨âì áâàãªâãàã "input line"
|
||||
pop de ; de=墮áâ áâப¨
|
||||
.loop: ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3)
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,1F
|
||||
inc h
|
||||
1: inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
ld (hl),a
|
||||
or a
|
||||
ret z ; ª®¥æ áâப¨
|
||||
inc (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
inc (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr nz,2F
|
||||
; ªãàá®à § ¯à ¢ë¬ ªà ¥¬ ¯®«ï ¢¢®¤
|
||||
inc (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
2: ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
inc de ; ¯à®¤¢. ¯®â®ª
|
||||
cp " "
|
||||
jr nc,.loop
|
||||
ret
|
||||
|
||||
; ’¥áâ ®¯æ¨¨ 襫« ¨ ãáâ. ¡¨â-ä« £®¢
|
||||
; ¢å®¤: hl=áâப ®¯æ¨©
|
||||
set_option_flag:
|
||||
ld a,(RUNMODE) ; ï祩ª ¡¨â-ä« £®¢
|
||||
ld c,a
|
||||
ld a,(hl)
|
||||
cp "a"
|
||||
jr c,setopt1
|
||||
cp "z"+1
|
||||
jr nc,$+4
|
||||
and 5Fh ; a..z -> A..Z
|
||||
setopt1: cp "P" ; § ¯ã᪠襫« á ®âà ¡. autoexec.bat
|
||||
jr nz,setopt2
|
||||
set 7,c
|
||||
jr setopt4
|
||||
;
|
||||
setopt2: cp "S" ; § ¯ã᪠2-© ª®¯¨¨ 襫« (¡¥§ ®âà ¡. autoexec.bat)
|
||||
jr nz,setopt3
|
||||
set 5,c
|
||||
jr setopt4
|
||||
;
|
||||
setopt3:cp "C" ; ¢ë¯®«. bat-ä ©« ¨ ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||
ret nz
|
||||
set 4,c
|
||||
setopt4: ld a,c
|
||||
ld (RUNMODE),a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;!TODO ¯à®¢¥à¨âì 4 ¨¦¥¨¤ã騥 ¯à®æ¥¤ãàë ª®£¤ ¢ DSS ¡ã¤ã⠮ଠ«ì® ¯ã⨠§ ¯®¬¨ âìáï
|
||||
; ‘®åà ¨âì ⥪. ¤¨áª ¨ ¯ãâì
|
||||
;GETPATH:
|
||||
save_disk_path:
|
||||
; ã§ âì ⥪. ª â «®£
|
||||
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.CurDir
|
||||
RST ToDSS
|
||||
save_disk:
|
||||
; ã§ âì ⥪. ¤¨áª
|
||||
ld c,Dss.CurDisk
|
||||
RST ToDSS
|
||||
add a,"A"
|
||||
ld (screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
ret
|
||||
|
||||
; ‚®ááâ ®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
|
||||
restore_disk_path:
|
||||
; ãáâ. ⥪. ¤¨áª
|
||||
ld a,(screen_path) ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
sub "A"
|
||||
ld c,Dss.ChDir
|
||||
RST ToDSS
|
||||
restore_path:
|
||||
; ãáâ. ⥪. ª â «®£
|
||||
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.ChDir
|
||||
RST ToDSS
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
; ®¢ãî áâபã ;!FIXIT ᤥ« âì ç¥à¥§ .PChars
|
||||
newline:ld a,_cc.cr
|
||||
ld c,Dss.PutChar
|
||||
RST ToDSS
|
||||
ld a,_cc.lf
|
||||
ld c,Dss.PutChar
|
||||
RST ToDSS
|
||||
ret
|
||||
|
||||
|
||||
; ‘à ¢¥¨¥ áâப
|
||||
; in: de=string1
|
||||
; hl=string2
|
||||
; b=¤«¨ áâப¨
|
||||
A874E: ld a,(de)
|
||||
cp "a"
|
||||
jr c,$+8
|
||||
cp "z"+1
|
||||
jr nc,$+4
|
||||
and 5Fh ; a..z -> A..Z
|
||||
cp (hl)
|
||||
ret nz
|
||||
inc hl
|
||||
inc de
|
||||
djnz A874E
|
||||
ret
|
||||
|
||||
|
||||
; ‘ª®¯¨à. áâபã (á ã«¥¬), ¬ ªá. 15 ᨬ¢®«®¢
|
||||
; (hl) -> (de)
|
||||
ncopy_string:
|
||||
ld bc,15 ; ¬ ªá. ¤«¨ áâப¨
|
||||
ld a,(hl)
|
||||
ldi
|
||||
ret po
|
||||
or a
|
||||
jr nz,$-5
|
||||
ret
|
||||
|
||||
; ‘ª®¯¨à. áâபã (á ã«¥¬)
|
||||
; (hl) -> (de)
|
||||
copy_string:
|
||||
ld a,(hl)
|
||||
ldi
|
||||
or a
|
||||
jr nz,copy_string
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; „¥áïâ¨çë© ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
; ¢å®¤: a=ç¨á«®
|
||||
; hl=¡ãä¥à
|
||||
A8913: ld c,2Fh
|
||||
inc c
|
||||
sub 10
|
||||
jr nc,$-3
|
||||
add a,10
|
||||
add a,"0"
|
||||
push af
|
||||
ld a,c
|
||||
ld (hl),a
|
||||
inc hl
|
||||
pop af
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ret
|
||||
|
||||
|
||||
|
||||
A893C: ld hl,0
|
||||
A893F: ld a,(de)
|
||||
inc de
|
||||
or a
|
||||
ret z
|
||||
cp "." ; à §¤¥«. ¤ âë
|
||||
ret z
|
||||
cp "-" ; à §¤¥«. ¤ âë
|
||||
ret z
|
||||
cp ":" ; à §¤¥«. ¢à¥¬¥¨
|
||||
ret z
|
||||
ld b,h
|
||||
ld c,l
|
||||
add hl,hl
|
||||
add hl,hl
|
||||
add hl,bc
|
||||
add hl,hl
|
||||
call A895A
|
||||
ret c
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,A893F
|
||||
inc h
|
||||
jr A893F
|
||||
|
||||
|
||||
; char -> int
|
||||
A895A: cp "0"
|
||||
ret c
|
||||
cp "9"+1
|
||||
ccf
|
||||
ret c
|
||||
sub "0"
|
||||
ret
|
||||
|
||||
|
||||
A8964: ld de,10000
|
||||
ld a,0C8h ; ret z
|
||||
ld (D8996),a
|
||||
call A898E
|
||||
ld de,1000
|
||||
call A898E
|
||||
ld de,100
|
||||
call A898E
|
||||
ld de,10
|
||||
call A898E
|
||||
ld a,l
|
||||
add a,"0"
|
||||
;!TEST
|
||||
;ld (ix+0),a
|
||||
;inc ix
|
||||
;ld (ix+0),0
|
||||
LD (IX+0),A
|
||||
LD (IX+1),0
|
||||
;
|
||||
ret
|
||||
|
||||
|
||||
A898E: xor a
|
||||
inc a
|
||||
sbc hl,de
|
||||
jr nc,$-3
|
||||
add hl,de
|
||||
dec a
|
||||
D8996: ret z
|
||||
add a,"0"
|
||||
ld (ix+0),a
|
||||
inc ix
|
||||
xor a ; nop
|
||||
ld (D8996),a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
Restore_Screen:
|
||||
LD C,Dss.GetVMod
|
||||
RST ToDSS
|
||||
AND #80
|
||||
RET Z
|
||||
LD BC,1 * 256 + Dss.SetVMod
|
||||
LD A,Dss.SetVMod.txt80x32
|
||||
JP ToDSS
|
||||
|
||||
|
||||
|
||||
; 梥â íªà 襫«
|
||||
color_screen:
|
||||
db 07h
|
||||
|
||||
|
||||
; ˆ¬ï ä ©« "autoexec.bat"
|
||||
autoexec_fname:
|
||||
db "system.bat",0
|
||||
|
||||
|
||||
; ¡¨â-ä« £¨ ®¯æ¨© á ¬®£® 襫«
|
||||
RUNMODE: db 0
|
||||
|
||||
|
||||
|
||||
; ¡ãä¥à à áè. ä ©«
|
||||
T8C1A: ds 3
|
||||
db 0
|
||||
|
||||
T8C1E: db "BAT" ; à áè. bat-ä ©«
|
||||
T8C21: db "ON",0
|
||||
T8C24: db "OFF",0
|
||||
|
||||
|
||||
include "edline.asm" ; áâப । ªâ¨à®¢ ¨ï
|
||||
include "batch.asm" ; ¯ àᨣ bat-ä ©«®¢
|
||||
include "shell_exec.asm" ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||||
include "error.asm" ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨© ®è¨¡®ª
|
||||
;
|
||||
include "Commands/exit.asm" ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||||
include "Commands/pause.asm" ; ¯ ã§
|
||||
include "Commands/rem.asm" ; ª®¬¬¥â ਩
|
||||
include "Commands/ver.asm" ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
||||
include "Commands/cls.asm" ; ®ç¨á⪠íªà
|
||||
include "Commands/date.asm" ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||||
include "Commands/dir.asm" ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||
include "Commands/chdir.asm" ; ᬥ ⥪. ª â «®£
|
||||
include "Commands/mkdir.asm" ; á®§¤ ¨¥ ª â «®£
|
||||
include "Commands/rmdir.asm" ; 㤠«¥¨¥ ª â «®£
|
||||
include "Commands/del.asm" ; 㤠«¥¨¥ ä ©«
|
||||
include "Commands/ren.asm" ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
||||
include "Commands/echo.asm" ; íå®-०¨¬
|
||||
include "Commands/help.asm" ; ¢ë¢®¤ íªà ¯®¬®é¨
|
||||
include "Commands/path.asm" ; § ¤ âì á¨áâ. ¯ãâì
|
||||
include "Commands/set.asm" ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
include "Commands/reboot.asm" ; á®äâ à¥á¥â
|
||||
;
|
||||
;
|
||||
193
SHELL/SHELL_EXEC.ASM
Normal file
193
SHELL/SHELL_EXEC.ASM
Normal file
@ -0,0 +1,193 @@
|
||||
; à ¡. ï祩ª
|
||||
D8374: dw 0
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------------------
|
||||
; <20> §¡®à ¨ ¢ë¯®«¥¨¥ ¢¢¥¤¥ëå ª®¬ ¤ ¨ ¨¬¥ ä ©«®¢
|
||||
;-------------------------------------------------------------
|
||||
A82E7: call EVALCMD ; (batch.asm)
|
||||
ld hl,struct_input_line+5
|
||||
dec hl
|
||||
;ld hl,struct_input_line+4;;
|
||||
ld c,(hl) ; ¤«¨ áâப¨
|
||||
ld b,0
|
||||
inc hl ; struct_input_line+5
|
||||
;ld hl,work_buffer+256;;
|
||||
A82F2: ld a,(hl)
|
||||
cp " "
|
||||
jr nz,A82FC
|
||||
inc hl
|
||||
dec c
|
||||
jr nz,A82F2
|
||||
ret
|
||||
;
|
||||
A82FC: ld d,h
|
||||
ld e,l
|
||||
add hl,bc
|
||||
ld (hl),0
|
||||
sbc hl,bc
|
||||
ld a,c
|
||||
ex af,af'
|
||||
ld a," "
|
||||
cpir
|
||||
jr nz,A830C
|
||||
inc c
|
||||
A830C: ex af,af'
|
||||
sub c
|
||||
ld c,a
|
||||
ld hl,CMDLIST ; ᯨ᮪ ª®¬ ¤ „Ž‘-
|
||||
; de=struct_input_line+5, c=¤«¨ áâப¨
|
||||
; ®â bat-®âà ¡®âª¨
|
||||
A8312: push bc
|
||||
push de
|
||||
A8314: ld a,(de)
|
||||
cp "a"
|
||||
jr c,A8321
|
||||
cp "z"+1
|
||||
jr nc,A8321
|
||||
and 5Fh ; a..z -> A..Z
|
||||
A8321: cp (hl)
|
||||
jr nz,COMP002 ; ¥ ¤®á-ª®¬ ¤ë
|
||||
inc hl
|
||||
inc de
|
||||
dec c
|
||||
jr nz,A8314
|
||||
xor a
|
||||
cp (hl)
|
||||
jr nz,COMP002
|
||||
pop bc
|
||||
pop bc
|
||||
ld a,(de)
|
||||
cp " "
|
||||
jr nz,A8338
|
||||
inc de
|
||||
A8338: inc hl
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld h,(hl)
|
||||
ld l,a
|
||||
jp (hl) ; á®®â¢. ®¡à ¡®â稪 ¤®á-ª®¬ ¤ë
|
||||
|
||||
; <20>¥ ¤®á-ª®¬ ¤ë. ’¥áâ § ¤ ¨¥ ¤¨áª ¨ § ¯ãáª ä ©«
|
||||
COMP002: xor a
|
||||
LD C,A
|
||||
CPIR
|
||||
inc hl
|
||||
inc hl
|
||||
pop de
|
||||
pop bc
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr nz,A8312 ; § ¤ ¢ 横«, ¥é¥ ¥ ¤®è«¨ ª®æ ᯨ᪠¤®á-ª®¬ ¤
|
||||
ld h,d
|
||||
ld l,e
|
||||
; hl=struct_input_line+5
|
||||
ld b,(hl) ;+0 1-© ᨬ¢®«
|
||||
inc hl
|
||||
ld c,(hl) ;+1 2-© ᨬ¢®«
|
||||
inc hl
|
||||
ld a,(hl) ;+2 3-© ᨬ¢®«
|
||||
or a ; § ¤ ¤¨áª ⨯ "x:" ?
|
||||
jr nz,A8376 ; ¥â, ¨¬¥¥¬ ¡®«ìè¥ 2-å ᨬ¢®«®¢
|
||||
ld a,":" ; ¯®áâä¨ªá ¡ãª¢ë ¤¨áª
|
||||
cp c ; 2-© ᨬ¢®«
|
||||
jr nz,A8376 ; § ¤ ¥ ¤¨áª
|
||||
ld a,b ; 1-© ᨬ¢®«
|
||||
cp "a"
|
||||
jr c,A8369
|
||||
cp "z"+1
|
||||
jr nc,A8369
|
||||
and 5Fh ; a..z -> A..Z
|
||||
A8369: sub "A" ; ®¬¥à ¤¨áª
|
||||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
; â¥áâ áãé¥á⢮¢ ¨¥ ¯ ¯ª¨ 楫¥¢®¬ ¤¨áª¥
|
||||
ld hl,system_path ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||||
RST ToDSS
|
||||
jp nc,save_disk_path ; Ok
|
||||
; ãáâ. ª®à¥ì, ¥â â ª®© ¯ ¯ª¨ ®¢®¬ ¤¨áª¥
|
||||
ld hl,system_path+1 ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld (hl),0
|
||||
dec hl
|
||||
ld (hl),'\'
|
||||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
jp save_disk_path ; Ok
|
||||
|
||||
; § ¤ ¥ ¤¨áª
|
||||
A8376: ex de,hl ; ¢®ááâ. ¤à¥á ç « áâப¨
|
||||
ld (D8374),hl ; struct_input_line+5
|
||||
ld de,T8C1A ; ¡ãä¥à
|
||||
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©«
|
||||
RST ToDSS
|
||||
ld hl,(D8374) ; ¨¬ï ä ©«
|
||||
jr c,A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
||||
bit 1,a ; ¥áâì à áè. ?
|
||||
jr z,A839D ; ¥â
|
||||
; ¥áâì à áè. ä ©«
|
||||
ld de,T8C1A ; ¡ãä¥à à áè. ä ©«
|
||||
ld hl,T8C1E ; "BAT"
|
||||
ld b,3 ; ¤«¨ áà ¢¥¨ï
|
||||
call A874E ; áà ¢¨âì áâப¨
|
||||
ld hl,(D8374)
|
||||
jp z,A83E8 ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||||
jr A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
||||
|
||||
A839D: ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||||
RST ToDSS
|
||||
;R10
|
||||
CALL Restore_Screen
|
||||
;R10
|
||||
ret nc ; Ok
|
||||
ld hl,(D8374)
|
||||
cp 3 ; ª®¤ ®è¨¡ª¨ "ä ©« ¥ ®¡ à㦥"
|
||||
jr nz,A83DD
|
||||
push hl
|
||||
;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||||
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
||||
ld b,a
|
||||
A83AF: ld a,(hl)
|
||||
cp " "+1
|
||||
jr c,A83B7
|
||||
inc hl
|
||||
djnz A83AF
|
||||
A83B7: ld e,b
|
||||
ld d,0
|
||||
add hl,de
|
||||
push hl
|
||||
ld e,4
|
||||
add hl,de
|
||||
pop de
|
||||
ex de,hl
|
||||
ld c,b
|
||||
ld b,0
|
||||
inc c
|
||||
lddr
|
||||
inc hl
|
||||
ld (hl),"."
|
||||
inc hl
|
||||
ld (hl),"B"
|
||||
inc hl
|
||||
ld (hl),"A"
|
||||
inc hl
|
||||
ld (hl),"T"
|
||||
pop hl
|
||||
jp A83E8 ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||||
|
||||
|
||||
; ‚믮«¨âì exe-ä ©«
|
||||
; hl=¨¬ï ä ©«
|
||||
A83D7: ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
||||
RST ToDSS
|
||||
;R10
|
||||
CALL Restore_Screen
|
||||
;R10
|
||||
ret nc
|
||||
A83DD: cp DSS_Error.sys.INVALID_HANDLE ; ª®¤ ®è¨¡ª¨ "¥â ¤¥áªà¨¯â®à "
|
||||
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
xor a ; ¨¤¥ªá "Bad command or file name"
|
||||
jp print_err_message
|
||||
1
SHELL/build.txt
Normal file
1
SHELL/build.txt
Normal file
@ -0,0 +1 @@
|
||||
55
|
||||
22
SHELL/version.inc
Normal file
22
SHELL/version.inc
Normal file
@ -0,0 +1,22 @@
|
||||
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
|
||||
LUA PASS1
|
||||
Console_build = increase_build("./SHELL/build.txt")
|
||||
if Console_build > 999 then
|
||||
Console_build = 999
|
||||
print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a")
|
||||
end
|
||||
ENDLUA
|
||||
LUA ALLPASS
|
||||
sj.insert_label("lua_BUILD", Console_build)
|
||||
ENDLUA
|
||||
;---------------------------------------------------------------------[]
|
||||
|
||||
;
|
||||
; Shell full version
|
||||
; ®¬¥à ¢¥àᨨ (0..9)
|
||||
CONSOLE_VERS EQU 1
|
||||
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
CONSOLE_MODF EQU 2
|
||||
; ®¬¥à ¡¨«¤ (0..999)
|
||||
CONSOLE_BUILD EQU lua_BUILD
|
||||
;
|
||||
Loading…
Reference in New Issue
Block a user