Rev 1026 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
; LAST UPDATE: 09.11.2022 savelij
PAGE
TITLE "evo-dos.a80"
include ../../macros.a80
include ../../define.a80
include ../../global_vars.a80
include ../../bas_trd_vars.a80
include ../../basic_tokens.a80
include ../../evodos_vars.a80
include ../../version.a80
include macros.a80
ZASTV_X EQU 7 ; X
BETA128
ZASTV_Y EQU 7 ; Y
BETA128
ZASTV_PIX EQU ZASTV_Y*0X20+0X4000+ZASTV_X+9 ;
ZASTV_ATR EQU ZASTV_Y*0X20+0X5800+ZASTV_X ;
ORG 0
di
ld de,0xffff
;
HONEY COMANDER
; ld a,7
; jr loc_9
JP LOC_3C50
DB 1
nop
loc_9 out (0xfe),a
ld a,0x3f
jr loc_24
DUPL 0X0010-$,0
jp PRINT_A_ ;RST 10
DUPL ADR_SEL_ROM-$,0XFF
LOC_14 OUT (C),A
NOP
RET
DUPL 0X0018-$,0XFF
jp PRINT_MSG ;RST 18
DUPL 0X0020-$,0XFF
jp CALL2BASIC ;RST 20 48
loc_24 LD HL,0XFFFF
jr loc_2B
jp ADR_OPEN_CHAN ;RST 28
loc_2B LD I,A
XOR A
JR LOC_33
IF EMU
JP RST30_WORK ;RST 30
ELSE
DUPL 0X33-$,0XFF
ENDIF
LOC_33 LD SP,HL
LD B,A
LD C,A
JR loc_3A
ei ;RST 38
ret
loc_3A REPT 8
PUSH BC
ENDM
LD HL,0XA500
ADD HL,SP
JR C,loc_3A
ld (P_RAMT),hl
ld de,0x3eaf
ld bc,0xa8
ld a,e
ex de,hl
ld sp,0x6000
ld (TRD_5F00),hl
ld hl,loc_79
push hl
ld hl,loc_3D2F
push hl
ld hl,0xb8ed ; LDDR
jr EXECUTECOM2HL
jp MAGIC
EXECUTECOM2HL ld (TRD_5F10),hl
push af
ld a,0xc9
ld (TRD_5F12),a
pop af
ld hl,(TRD_5F00)
jp TRD_5F10
loc_79 ex de,hl
inc hl
ld (UDG),hl
dec hl
ld bc,0x40 ;
ld (RASP),bc
ld (RAMTOP),hl
ld hl,0x3C00
ld (CHARS),hl
ld hl,(RAMTOP)
ld (hl),0x3e
dec hl
ld sp,hl
dec hl
dec hl
ld (ERR_SP),hl
ld de,0x1303
push de
im 1
ld iy,ERR_NR
ld hl,TRD_5CB6 ;
INTERFACE1
ld (CHANS),hl
ld de,0x15af
ld bc,0x15
ex de,hl
call COPY_BAS2VARS
ex de,hl
dec hl
ld (DATADD),hl
inc hl
ld (PROG),hl
ld (VARS),hl
ld (hl),0x80
inc hl
ld (E_LINE),hl ;
ld (hl),0x0d
inc hl
ld (hl),0x80
inc hl
ld (WORKSP),hl
ld (STKBOT),hl
ld (STKEND),hl
ld a,0x38
ld (ATTR_P),a
ld (ATTR_T),a
ld (BORDCR),a
ld hl,0x0523
ld (REPDEL),hl
dec (iy-0x3a)
dec (iy-0x36)
ld hl,0x15c6
ld de,STRMS
ld bc,0x0e
call COPY_BAS2VARS
set 1,(iy+1)
ld hl,TRD_5CC2 ;
#C9.
TR-DOS BASIC
ld (hl),0xc9
rst 0x20
dw 0x0edf ; ®ç¨á⪠¡ãä¥à ¯à¨â¥à
ld hl,DF_SZ ;
ld (hl),2
ld hl,0x128b
push hl
ld a,0xaa
ld (NOT_USED),a
ei
jp IN_DOS_15616
COPY_BAS2VARS ld (TRD_5F00),hl
ld hl,loc_3D2F
push hl
ld hl,0xb0ed ; LDIR
ld (TRD_5F10),hl
ld hl,(TRD_5F00)
jp TRD_5F10
;
WORK4AUTORUN call DELETE_BUF ;
,
call CLEAR_SCREEN ;
ld hl,(E_LINE) ;
inc hl
ld e,(hl)
inc hl
ld d,(hl) ;
ld a,d
or e
ex de,hl
jr z,loc_140 ;
=0,
xor a
ld (TRD_5D10),a ;
loc_140 push hl
call RESTORE_SP ;
pop hl
ld (NEWPPC),hl
xor a
ld (NSPPS),a
rst 0x20
dw 0x16b0 ;
ld hl,(PROG)
dec hl
ld (DATADD),hl
ld sp,(ERR_SP)
ld a,(TRD_5D10) ;
or a
ld hl,0x1b76
jr z,loc_166
rst 0x20
dw 0x1bb0 ;
"OK"
loc_166 push hl
ld hl,TRD_5CC2
push hl
ret
CONTINUE_15619 DUPL 3,0
call CREATE_BUF ;
ld a,0xff
ld (TRD_5D15),a ;
0,
TR-DOS.
xor a
ld (TRD_5CF7),a
ld a,0xaa
ld (TRD_5D17),a ;
,
#AA
ld hl,CP_ERROR
ld (TRD_5D1A),hl ;
ld hl,0
add hl,sp
ld (TRD_5D1C),hl ;
SP
dec hl
dec hl
ld sp,hl
call MARK_SP ;
ld hl,(RAMTOP)
ld de,(CH_ADD)
sbc hl,de
ex de,hl
jr nc,loc_1A5
or a
ld de,0x101
sbc hl,de
loc_1A5 ld (CH_ADD),hl
loc_1A8 call CP_0D_OR_80
loc_1AB jp z,END_COMAND
cp __REM
inc hl
jr nz,loc_1A8
call CP_0D_OR_80
jr z,loc_1AB
cp ":"
jp nz,END_COMAND
inc hl
call SAE2_HL_
ld hl,(TRD_5D11) ;
TR_DOS
jp loc_30A
CP_0D_OR_80
IF EMU
CALL READ_BYTE_HL ;DCU
ELSE
ld a,(hl)
cp 0x0d
ENDIF
ret z
cp 0x80
ret z
or a
ret
call REWRITE_9SEC
;
END_COMAND ld hl,0
ld (TRD_5CF8),hl ;
2
call DELETE_BUF
call CLEAR_WORKSPACE
ld hl,TRD_5D17 ;
,
#AA
ld (hl),0xaa
ld hl,TRD_5D1F
ld a,(hl)
or a
ld (hl),0
jr nz,loc_1F3
call DEL_5BYTES
call FIND_ENDSTR ;
loc_1F3 ld sp,(TRD_5D1C) ;
SP
ld hl,(TRD_5D1A) ;
ld bc,(TRD_5D0F) ;
TR-DOS
ld b,0
jp (hl)
;DCU (
0X0207)
CP_ERROR call RESTORE_SP ;
bit 7,(iy+0)
ret nz
ld de,TRD_5CC2
ld sp,(ERR_SP)
push de
ret
;
FIND_ENDSTR call GET_SYMSTR
cp 0x0d
ret z
call GET_NEXT_SYM
jr FIND_ENDSTR ;
;
MARK_SP ld hl,(ERR_SP)
ld (TRD_5D13),hl ; ERR_SP
ld hl,(TRD_5D1C) ;
SP
dec hl
dec hl
ld (ERR_SP),hl
ld de,loc_3D16
ld (hl),e
inc hl
ld (hl),d
ret
;
RESTORE_SP ld hl,(TRD_5D13) ; ERR_SP
loc_0235 ld (ERR_SP),hl
ret
IN_COMMAND_CPU ld hl,0 ;
ld (TRD_5CF7),hl
add hl,sp
ld (TRD_5D1C),hl ;
SP
dec hl
dec hl
ld sp,hl
call MARK_SP ;
;2
;
TR-DOS
BASIC 128
call CLEAR_SCREEN ;
call OPEN_CHAN_2 ;
2
ld hl,TRD_5D17 ;
,
#AA
ld a,(hl)
cp 0xaa
ld a,0
ld (TRD_5D0F),a ;
TR-DOS
jp z,COMMAND_CPU
ld (hl),0xaa
ld hl,ZASTAVKA ;
rst 0x18
call OUT_COLOR_LINE ;
IF EMU
CALL ADD_TXT_VERS
ENDIF
DUPL 0X0271-$,0
loc_271 ld a,(NOT_USED) ;
#AA
cp 0xaa
jr nz,COMMAND_CPU ;
#AA,
DUPL 0X027B-$,0
loc_27B ld hl,(E_LINE) ;
ld a,0xfe
ld (TRD_5D0E),a ; #FE-
BASIC,
TR-DOS
ld (hl),0xf7
inc hl
ld (hl),0x22
inc hl
ld (hl),"b"
inc hl
ld (hl),"o"
inc hl
ld (hl),"o"
inc hl
ld (hl),"t"
inc hl
ld (hl),0x22
inc hl
ld (K_CUR),hl
ld (hl),0x0d
inc hl
ld (hl),0x80
inc hl
ld (WORKSP),hl
ld (STKBOT),hl
ld (STKEND),hl
set 3,(iy+1)
jr GO2RUNBOOT
;
3
LDI3_HL2DE ld b,3
loc_2B2 ld a,(hl)
ld (de),a
inc hl
inc de
djnz loc_2B2
ret
;
STOP_MOTOR ld b,0x20
loc_2BB push bc
xor 8
out (0xff),a
push af
ld a,5
call PAUSE_C_A
pop af
pop bc
djnz loc_2BB
ret
;
DOS
COMMAND_CPU ld hl,(TRD_5D1C) ;
SP
dec hl
dec hl
ld sp,hl
call OPEN_CHAN_0 ;
0
ld a,(0X5D16)
or 3
call STOP_MOTOR
ld a,(TRD_5D16)
call STOP_MOTOR
xor a
ld (TRD_5D15),a ;
0,
TR-DOS.
call GET_COMMAND ;
call SAE2E_LINE
GO2RUNBOOT call CLEAR_DOWN_SCR ;
ld hl,COMMAND_CPU
ld (TRD_5D1A),hl ;
xor a
ld (TRD_5D0F),a ;
TR-DOS
ld (TRD_5CEF),a
ld hl,(E_LINE) ;
push hl
ld de,TRD_5D20 ;
3
call LDI3_HL2DE ;
3
pop hl
ld (TRD_5D11),hl ;
TR_DOS
loc_30A ld a,(hl)
ld b,a
and 0x80
ld a,b
jr z,loc_31A
cp __RETURN
jr z,loc_31A
push af
call ACTIV_DEF_DSK ;
pop af
loc_31A ld hl,CODE_BYTE_COM ;
TR-DOS
dec hl
ld c,0
loc_320 inc c
ld d,a
ld a,LOW (ECODE_BYTE_COM-CODE_BYTE_COM)
cp c
JP C,ENDCOMAND
ld a,d
inc hl
cp (hl)
jr nz,loc_320
LOC_32D cp __RETURN
call nz,CREATE_BUF ;
ld a,9
ld (TRD_5D06),a ;
xor a
ld (TRD_5D0F),a ;
TR-DOS
ld (TRD_5CD6),a ; #FF-
ld (TRD_5D10),a ;
ld hl,FLAGS
res 7,(hl)
ld b,0
ld hl,SPIS_ADR_COM ;
dec c
sla c
add hl,bc
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl
LOC_353 push hl
ld de,END_COM
push de
jp (hl)
END_COM ld hl,FLAGS
set 7,(hl)
pop hl
jp (hl)
;
ZASTAVKA DB 0X16,0X01,0X06
ZASTAVKA_VER EQU $+9
DB " EVO-DOS Ver ",VERS_DOS," "
DB 0X0D,0X0D,0X7F
; 12345678901234567890123456789012
DB " 2010 Created for PentEvo 4MB "
DB 0X16,0X05,0X0C
DB "NedoPC"
DB 0X16,ZASTV_Y,ZASTV_X
IF EMU
ROM_VER IF EMU3D2F=1
DC "EMUL 3D2F"
ELSE
DC "EMUL 3D13"
ENDIF
ELSE
DC "Nedo Emul"
ENDIF
END_OUT_DIR call READ_9SEC ;
9
call PRINT_0D
call PRINT_0D
loc_3B5 ld bc,(TRD_5E0A)
call PRINT_CHISLO ;
ld hl,TXT_FREE_
rst 0x18
GOTO_END jp END_COMAND
;
PRINT_ERROR push af
ld a,(TRD_5D0E) ; #FE-
BASIC,
TR-DOS
cp __RETURN
jr nz,CP4PRINT_HEAD
pop af
ret
CP4PRINT_HEAD pop af
ld (TRD_5D0F),a ;
TR-DOS
ld a,(TRD_5D15) ;
0,
TR-DOS.
or a
call z,PRINT_MSG ;
ret
ERR_NOFILES ld hl,TXT_NOFILES_
ld a,1
jp PRINT_TXTERR
ERR_OK ld hl,TXT_OK_ ; "O.K."
xor a
jp PRINT_TXTERR
;
0
RD_0SEC2BUF xor a
ld (TRD_5CCC),a ;
;
READ_NUM_SEC ld de,(TRD_5CCC) ;
ld d,0
READ_SEC4NEM call CREATE_BUF ;
ld hl,TRD_5D25
ld b,1
jp COM_05 ;
;
9
READ_9SEC call CREATE_BUF ;
ld de,8
jr READ_SEC4NEM
;
COM_18 call READ_9SEC ;
9
ld a,(TRD_5E0C)
cp 0x10
jr z,CP_TYPE_DSK
ld hl,TXT_DISCERROR_
rst 0x18
jr GOTO_END
CP_TYPE_DSK call GET_TYPE_DISK
res 0,(hl)
res 1,(hl)
ld a,(TRD_5E08)
bit 0,a
jr nz,loc_425
set 0,(hl)
loc_425 bit 3,a
ret nz
set 1,(hl)
ret
CP_SECOND_SYM ld hl,(TRD_5D11) ;
TR_DOS
inc hl
ld a,(hl)
cp 0x0d
ret
CAT call CP_SECOND_SYM ;
CAT
ld bc,2
ld (TRD_5CDB),bc
jr z,loc_46A
cp "#"
jr nz,CODES
ld (CH_ADD),hl
call SET_NUM_CHAN
call GET_SYMSTR
cp 0x0d
jr z,loc_46A
cp ","
jp nz,SINTAX_ERROR
call GET_NEXT_SYM
call PUT_NUMDSK_STK
jr loc_460
CODES call SET_AND_PUT
loc_460 call EXIT_IF_SINTAX
call GET_STKBOT_
ex de,hl
call SETUP_DSK
loc_46A call EXIT_IF_SINTAX
ld a,(TRD_5CF6) ;
ld (TRD_5CF9),a ;
2
call COM_18 ;
ld a,(TRD_5CDB)
loc_479 cp 2
push af
call z,CLEAR_SCREEN ;
pop af
cp 0x11
jp nc,SINTAX_ERROR
call OPENSTREAM
ld a,0xff
ld (TRD_5CF8),a ;
2
ld hl,TXT_TITLE_ ; "TITLE:"
rst 0x18
ld hl,TRD_5E1A
rst 0x18
call PRINT_0D
ld a,(TRD_5E09)
ld hl,TRD_5E19
sub (hl)
push hl
call PRINT_CHISLO_A_
ld hl,TXT_NOFILES+2
rst 0x18
pop hl
ld c,(hl)
call CONV2_2BYTES
ld hl,TXT_DELFILE_ ; " DEL. FILE"
rst 0x18
call RD_0SEC2BUF ;
0
ld hl,TRD_5D25
loc_4B6 call CP_END_DIR ;
call PRINT_0D
ld a,(TRD_5CF6) ;
add a,"A"
rst 0x10
ld b,2
loc_4C4 call CP_END_DIR ;
push bc
ld a,":"
rst 0x10
push hl
call PRINT_FILENAME ;
ld bc,0x0d
pop hl
push hl
add hl,bc
ld c,(hl)
push bc
ld a,c
ld b,2
cp 0x0a
jr c,loc_4DF
dec b
loc_4DF cp 0x64
jr nc,loc_4E8
loc_4E3 ld a," "
rst 0x10
djnz loc_4E3
loc_4E8 pop bc
call PRINT_CHISLO ;
pop hl
pop bc
ld de,0x10
add hl,de
djnz loc_4C4
jr loc_4B6
;
CP_END_DIR push hl
push bc
ld a,(TRD_5CF9) ;
2
ld hl,TRD_5CF6 ;
cp (hl)
call nz,COM_01 ;
pop bc
pop hl
jp CP_END_CAT
ADD_10 ld de,0x10
add hl,de
ret
CP_END_BUF push hl
push bc
ld bc,0xa1db
add hl,bc
jr c,READ_SEC2BUF
pop bc
pop hl
ret
READ_SEC2BUF ld hl,TRD_5CCC ;
inc (hl)
call READ_NUM_SEC ;
pop bc
pop hl
ld hl,TRD_5D25
ret
NUMDSK2BYTE and 0xdf
sbc a,"A"
jp c,SINTAX_ERROR
cp 4
jp nc,SINTAX_ERROR
ret
CP_ON_STKBOT call GET_STKBOT_
ld a,c
or b
jp z,SINTAX_ERROR
ret
NEW call INP_2STR2STKBOT ;
NEW
call EXIT_IF_SINTAX
call INP_EXTFILENAME ;
call SET_CP_FILENAME
ld a,(TRD_5CF6) ;
ld (TRD_5CF8),a ;
2
jp nz,ERR_NOFILES
push bc
call RDHEAD_FILENAME ;
call SET_CP_FILENAME
push af
ld a,(TRD_5CF8) ;
2
ld hl,TRD_5CF6 ;
cp (hl)
jp nz,SINTAX_ERROR
call COM_18 ;
pop af
jp z,FILE_EXISTS
pop bc
loc_569 call SETHEADFILENAME
call REWRITE_9SEC ;
9
jp ERR_OK
CP_HIGH_ERR ld a,(TRD_5D10) ;
or a
ret
CP_ERASED_FILES ld a,(TRD_5D07) ;
or a
jp z,ERR_NOFILES
jp ERR_OK
;
GET_OVERWRITE_ push bc
call CLEAR_SCREEN ;
ld a,(TRD_5CF6) ;
add a,"A"
call PRINT_A_
ld a,":"
call PRINT_A_
ld hl,TRD_5CDD ;
call PRINT_FILENAME ;
ld hl,TXT_FILEEXIST ; "FILE EXISTS"
call PRINT_MSG ; ¯¥ç âì ⥪á⮢®£® á®®¡é¥¨ï
call GET_KEYS ;
cp "Y"
push af
call CLEAR_SCREEN ;
pop af
pop bc
ret nz
push bc
call CLEAR_SCREEN ;
pop bc
call ERASE_FILE ;
xor a
ret
CP_EXT_SHARP ld a,(TRD_5CE5) ;
cp "#"
jr z,FINDFILENAME_0A
xor a
ret
FINDFILENAME_0A ld a,0x0a
ld (TRD_5D06),a ;
call FIND_FILENAME ;
ld a,9
ld (TRD_5D06),a ;
ret
COPY_STAR_STAR ld a,(TRD_5CDD) ;
COPY *,*
cp "*"
jp nz,ERR_NOFILES
call GET_STKBOT_
ex de,hl
call SETUP_DSK
ld a,(hl)
cp "*"
jp nz,SINTAX_ERROR
ld a,(TRD_5CF6) ;
ld (TRD_5CF9),a ;
2
ld a,(TRD_5CF9) ;
2
call COM_01 ;
call COM_18 ;
ld a,0xff
ld (TRD_5D0D),a
loc_5F4 ld a,(TRD_5CF8) ;
2
call COM_01 ;
call COM_18 ;
ld a,(TRD_5D0D)
inc a
ld (TRD_5D0D),a
ld c,a
call RDHEAD_FILENAME ;
ld a,(TRD_5CDD) ;
cp 0
jp z,ERR_OK
cp 1
jr z,loc_5F4
ld hl,TRD_5CE6 ; <C>-
, <B>-
ld de,TRD_5CED ;
ld bc,7
ldir
ld a,(TRD_5CF9) ;
2
call COM_01 ;
call FIND_FILENAME ;
jr nz,loc_634
call CP_EXT_SHARP
jr nz,loc_634
call GET_OVERWRITE_ ;
jr nz,loc_5F4
loc_634 call COPY_FILE2DSK ;
2
call REWRITE_9SEC ;
9
jr loc_5F4
;
2
COPY_FILE2DSK call READ_9SEC ;
9
ld a,(TRD_5E09)
cp 0x80
jp z,ERR_DIRFULL ;
ld hl,TRD_5CED ;
ld de,TRD_5CE6 ; <C>-
, <B>-
ld bc,7
ldir
ld de,(TRD_5CEA) ;
ld d,0
or a
ld hl,(TRD_5E0A)
sbc hl,de
jp c,loc_1C45
ld (TRD_5E0A),hl
ld hl,(TRD_5E06)
ld (TRD_5CEB),hl ;
push hl
call COPY_FILE ;
2
pop hl
ld (TRD_5CEB),hl ;
ld hl,(TRD_5CF4)
ld (TRD_5E06),hl
ld hl,TRD_5E09
inc (hl)
ld c,(hl)
dec c
ld b,0
push bc
ld de,9
ld (TRD_5CF4),de
call REWRITE_9SEC ;
9
pop bc
call SETHEADFILENAME
ret
COPY ld hl,(TRD_5D11) ;
TR_DOS
inc hl
ld a,(hl)
and 0xdf
cp "S"
jp z,COPY_S
cp "B"
jp z,COPY_B
call INP_2STR2STKBOT
call EXIT_IF_SINTAX
call RESERVED_RAM
call INP_EXTFILENAME ;
call SET_CP_FILENAME
ld a,(TRD_5CF6) ;
ld (TRD_5CF8),a ;
2
jp nz,COPY_STAR_STAR ;
COPY *,*
call RDHEAD_FILENAME ;
ld hl,TRD_5CE6 ; <C>-
, <B>-
ld de,TRD_5CED ;
ld bc,7
ldir
call SET_CP_FILENAME
push af
push bc
ld a,(TRD_5CF6) ;
ld (TRD_5CF9),a ;
2
ld a,(TRD_5CF8) ;
2
call COM_01 ;
call COM_18 ;
ld a,(TRD_5CF9) ;
2
call COM_01 ;
call COM_18 ;
pop bc
pop af
jr nz,loc_6F3
call CP_EXT_SHARP
jr nz,loc_6F3
call GET_OVERWRITE_ ;
jp nz,ERR_OK
loc_6F3 call COPY_FILE2DSK ;
2
call REWRITE_9SEC ;
9
ld a,(TRD_5CE5) ;
cp "#"
jp nz,ERR_OK
ld a,0x0a
ld (TRD_5D06),a ;
ld hl,TRD_5CE6 ; <C>-
, <B>-
inc (hl)
ld a,(TRD_5CF8) ;
2
call COM_01 ;
call CP_EXT_SHARP
jp nz,ERR_OK
call RDHEAD_FILENAME ;
ld hl,TRD_5CE6 ; <C>-
, <B>-
ld de,TRD_5CED ;
ld bc,7
ldir
ld a,(TRD_5CF9) ;
2
call COM_01 ;
call COM_18 ;
jr loc_6F3
;
2
COPY_FILE ld a,(TRD_5CF1)
or a
ret z
push hl
ld hl,TRD_5D23
sub (hl)
pop hl
jr nc,loc_775
ld a,(TRD_5CF1)
ld b,a
xor a
ld (TRD_5CF1),a
loc_744 push bc
ld a,(TRD_5CF8) ;
2
call COM_01 ;
pop bc
push bc
ld hl,(TRD_5CCF) ;
WORK_SP
push hl
ld de,(TRD_5CF2)
call COM_05 ;
ld hl,(TRD_5CF4)
ld (TRD_5CF2),hl
ld a,(TRD_5CF9) ;
2
call COM_01 ;
pop hl
pop bc
ld de,(TRD_5CEB) ;
call COM_06 ;
ld hl,(TRD_5CF4)
ld (TRD_5CEB),hl ;
jr COPY_FILE ;
2
loc_775 ld (TRD_5CF1),a
push hl
ld hl,TRD_5D23
ld b,(hl)
pop hl
xor a
jr loc_744
;
ERASE_FILE xor a
ld (TRD_5D07),a ;
jr ERASE_FILES
ERASE call SET_AND_PUT ;
ERASE
call EXIT_IF_SINTAX
call INP_EXTFILENAME ;
xor a
ld (TRD_5D07),a ;
call FIND_FILE ;
call ERASE_FILES
jp nz,CP_ERASED_FILES
jp ERR_OK
ERASE_FILES ld a,(TRD_5CDD) ;
ld (TRD_5D08),a ;
ret nz
ld hl,TRD_5D07 ;
inc (hl)
push bc
call READ_9SEC ;
9
ld a,(TRD_5E09)
pop bc
inc c
cp c
jr nz,loc_7BC
dec a
ld (TRD_5E09),a
xor a
loc_7BC push af
jr z,loc_7C3
ld hl,TRD_5E19
inc (hl)
loc_7C3 push bc
call REWRITE_9SEC ;
9
pop bc
dec c
call RDHEAD_FILENAME ;
pop af
jp z,loc_7D2
ld a,1
loc_7D2 ld (TRD_5CDD),a ;
push af
call WRHEAD_FILENAME ;
ld a,(TRD_5D08) ;
ld (TRD_5CDD),a ;
pop af
jr z,WR_NEW_FREE_SEC
call FIND_FILENAME ;
jr ERASE_FILES
WR_NEW_FREE_SEC call READ_9SEC ;
9
ld hl,(TRD_5CEB) ;
ld (TRD_5E06),hl
ld de,(TRD_5CEA) ;
ld hl,(TRD_5E0A)
ld d,0
add hl,de
ld (TRD_5E0A),hl
jp REWRITE_9SEC ;
9
;===============FREE SPACE 1============
IF EMU
include virtual.a80
ENDIF
;=======END OF FREE SPACE 1=============
TITLE "evo-dos.a80"
DUPL 0X1018-$,0XFF
COM_STAR call SET_AND_PUT
call EXIT_IF_SINTAX
call CP_ON_STKBOT
ld a,(de)
call NUMDSK2BYTE
ld (TRD_5D19),a ;
; call COM_01 ;
JP SET_CURRDRV
jp ERR_OK
;
INP_EXTFILENAME ld b,"C"
ld a,(TRD_5CD6) ; #FF-
or a
jr nz,loc_104D
call GET_SYMSTR
cp __CODE
ld b,"C"
jr z,loc_104D
cp __DATA
ld b,"D"
jr z,loc_104D
cp "#"
ld b,"#"
jr z,loc_104D
ld b,"B"
loc_104D ld hl,TRD_5CE5 ;
ld (hl),b
ret
;
GET_KEYS di
push hl
push bc
push de
loc_1056 rst 0x20
dw 0x028e ;
ld c,0
jr nz,loc_1056
rst 0x20
dw 0x031e ;
jr nc,loc_1056
dec d
ld e,a
rst 0x20
dw 0x0333 ;
pop de
pop bc
pop hl
and 0xdf
ei
ret
;
OUT_COLOR_LINE ld hl,ZASTV_ATR
ld b,0x0a
loc_1073 ld (hl),7
inc hl
djnz loc_1073
ld (hl),2
inc hl
ld (hl),0x16
inc hl
ld (hl),0x34
inc hl
ld (hl),0x25
inc hl
ld (hl),0x28
inc hl
ld (hl),7
ld hl,ZASTV_PIX
ld b,8
xor a
loc_108F push bc
scf
rla
push hl
push af
ld b,5
loc_1096 inc hl
ld (hl),a
djnz loc_1096
pop af
pop hl
pop bc
ld de,0x100
add hl,de
djnz loc_108F
ret
ret
TXT_DELFILES db " Del."
TXT_FILE_S_ DZ " File(s)"
TXT_TITLE DC "Title: "
TXT_DISKDRIVE DB 0X17,0X11," Disk Drive: ",0
TXT_1SPACE DB 0X17,0X10," ",0
TXT_40TRK_SS DB 0X17,0X10," 40 Track S. Side",0
TXT_80TRK_SS DB 0X17,0X10," 80 Track S. Side",0
TXT_40TRK_DS DB 0X17,0X10," 40 Track D. Side",0
TXT_80TRK_DS DB 0X17,0X10," 80 Track D. Side",0
TXT_FREESECS DB 0X17,0X10," Free Sector ",0
TXT_FILENAME DB 0X0D,0X0D," File Name Start Length Line",0
CREATE_222BYTES ld hl,(WORKSP)
ld (TRD_5CCF),hl ;
WORK_SP
ld bc,0x222
jp CREATE_FREERAM
;
HL
PRINT_HL_CHISLO xor a
ld de,10000
loc_1161 sbc hl,de
jr c,loc_1168
inc a
jr loc_1161
loc_1168 add a,"0"
call PRINT_A_CHISLO
add hl,de
xor a
ld de,1000
loc_1172 sbc hl,de
jr c,loc_1179
inc a
jr loc_1172
loc_1179 add a,"0"
call PRINT_A_CHISLO
add hl,de
xor a
ld de,100
loc_1183 sbc hl,de
jr c,loc_118A
inc a
jr loc_1183
loc_118A add a,"0"
call PRINT_A_CHISLO
add hl,de
xor a
ld de,10
loc_1194 sbc hl,de
jr c,loc_119B
inc a
jr loc_1194
loc_119B add a,"0"
call PRINT_A_CHISLO
add hl,de
ld a,l
add a,"0"
call PRINT_A_CHISLO
ret
PRINT_A_CHISLO push hl
push de
call PRINT_A_
pop de
pop hl
ret
FIND_END_BUFDIR push hl
push bc
ld a,(TRD_5CF9) ;
2
ld hl,TRD_5CF6 ;
cp (hl)
call nz,COM_01 ;
pop bc
pop hl
call CP_END_BUF
ld a,(hl)
or a
jp z,END_COMAND
cp 1
call z,ADD_10
ret nz
jr FIND_END_BUFDIR
LIST call CP_SECOND_SYM
ld bc,2
ld (TRD_5CDB),bc
jr z,loc_1205
cp "#"
jr nz,LIST4CODES
ld (CH_ADD),hl
call SET_NUM_CHAN
call GET_SYMSTR
cp 0x0d
jr z,loc_1205
cp ","
jp nz,SINTAX_ERROR
call GET_NEXT_SYM
call PUT_NUMDSK_STK
jr loc_11FB
LIST4CODES call SET_AND_PUT
loc_11FB call EXIT_IF_SINTAX
call GET_STKBOT_
ex de,hl
call SETUP_DSK
loc_1205 call EXIT_IF_SINTAX
ld a,(TRD_5CF6) ;
ld (TRD_5CF9),a ;
2
call COM_18 ;
ld a,(TRD_5CDB)
cp 2
push af
call z,CLEAR_SCREEN ;
pop af
cp 0x11
jp nc,SINTAX_ERROR
call OPENSTREAM
ld a,0xff
ld (TRD_5CF8),a ;
2
call CREATE_222BYTES
ld hl,TRD_5E06
ld de,(TRD_5CCF) ;
WORK_SP
ld bc,0X20
ldir
call RD_0SEC2BUF ;
0
ld hl,TRD_5D25
push hl
loc_123E ld hl,TXT_TITLE ; "TITLE:"
push bc
rst 0x18
ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,0x14
add hl,bc
rst 0x18
ld hl,TXT_DISKDRIVE
rst 0x18
ld a,(TRD_5CF6) ;
add a,"A"
call PRINT_A_
call PRINT_0D
ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,3
add hl,bc
ld a,(hl)
ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,0x13
add hl,bc
sub (hl)
push hl
call PRINT_CHISLO_A_
ld hl,TXT_DELFILES+5
rst 0x18
ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,2
add hl,bc
ld a,(hl)
ld hl,TXT_40TRK_SS
cp 0x19
jr z,loc_1292
ld hl,TXT_80TRK_SS
cp 0x18
jr z,loc_1292
ld hl,TXT_40TRK_DS
cp 0x17
jr z,loc_1292
ld hl,TXT_80TRK_DS
loc_1292 rst 0x18
pop hl
ld c,(hl)
call CONV2_2BYTES
ld hl,TXT_DELFILES ; " DEL. FILE(S)"
rst 0x18
ld hl,TXT_FREESECS
rst 0x18
ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,4
add hl,bc
ld c,(hl)
inc hl
ld b,(hl)
call PRINT_CHISLO ;
ld hl,TXT_FILENAME
rst 0x18
pop bc
pop hl
ld b,0x10 ;
loc_12B5 call FIND_END_BUFDIR ;
call PRINT_0D ;
push bc
push hl
call PRINT_FILENAME ;
ld bc,0x0d
pop hl
push hl
add hl,bc
ld c,(hl)
push bc
ld a,c
ld b,2
cp 10
jr c,loc_12D0
dec b
loc_12D0 cp 100
jr nc,loc_12D9
loc_12D4 ld a," "
rst 0x10
djnz loc_12D4
loc_12D9 pop bc
call PRINT_CHISLO ;
ld hl,TXT_1SPACE
rst 0x18
pop hl
push hl
ld bc,9
add hl,bc
ld e,(hl)
inc hl
ld d,(hl)
push hl
ex de,hl
call PRINT_HL_CHISLO
ld a," "
call PRINT_A_
pop hl
inc hl
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl
call PRINT_HL_CHISLO
pop hl
push hl
ld bc,8
add hl,bc
ld a,(hl)
cp "B"
call z,PRN_ADR_ASTART
pop hl
pop bc
ld de,0x10
add hl,de
djnz loc_12B5
push hl
call PRINT_0D
call PRINT_0D
jp loc_123E
PRN_ADR_ASTART ld bc,5
add hl,bc
ld b,(hl)
inc hl
ld e,(hl)
inc hl
ld d,(hl)
dec b
jr z,loc_1335
dec b
jr z,loc_1335
ld a,0x10
loc_132C inc e
cp e
jr nz,loc_1333
ld e,0
inc d
loc_1333 djnz loc_132C
loc_1335 ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,0x21
add hl,bc
ld b,2
push hl
call COM_05 ;
ld a,0x80
pop hl
ld bc,0x200
cpir
ld a,(hl)
cp 0xaa
ret nz
inc hl
ld c,(hl)
inc hl
ld b,(hl)
ld a,b
or c
ret z
push bc
ld a," "
call PRINT_A_
pop bc
call PRINT_CHISLO ;
ret
COPY_S call SET_CH_ADD
call GET_NEXT_SYM
call PUT_NUMDSK_STK
call EXIT_IF_SINTAX
call RESERVED_RAM
ld hl,TXT_INS_SRC ; "INSERT SOURCE DISK THEN PRESS Y"
call PRINT_MSG ;
loc_1375 call GET_KEYS ;
cp "Y"
jr nz,loc_1375
call CLEAR_DOWN_SCR ;
call INP_EXTFILENAME ;
call SET_CP_FILENAME
jp nz,ERR_NOFILES
call COPY_ON1DSK
ld a,(TRD_5CE5) ;
cp "#"
jp nz,ERR_OK
loc_1393 ld a,0x0a
ld (TRD_5D06),a ;
ld hl,TRD_5CE6 ; <C>-
, <B>-
inc (hl)
call CLEAR_SCREEN ;
ld hl,TXT_INS_SRC ; "INSERT SOURCE DISK THEN PRESS Y"
call PRINT_MSG ;
loc_13A5 call GET_KEYS ;
cp "Y"
jr nz,loc_13A5
call FIND_FILENAME ;
jp nz,ERR_OK
call COPY_ON1DSK
jr loc_1393
COPY_ON1DSK call RDHEAD_FILENAME ;
ld hl,TRD_5CE6 ; <C>-
, <B>-
ld de,TRD_5CED ;
ld bc,7
ldir
ld a,(TRD_5CF1)
ld (TRD_5D10),a ;
call COM_18 ;
call GET_TYPE_DISK
ld (TRD_5CD9),a ;
<B> <C>
ld a,0xff
ld (TRD_5D21),a
call COPY_ON1DSK_
ld hl,(TRD_5D1F)
ld (TRD_5CEB),hl ;
ld hl,(TRD_5CF4)
ld (TRD_5E06),hl
ld hl,TRD_5E09
inc (hl)
ld c,(hl)
dec c
ld b,0
push bc
ld de,9
ld (TRD_5CF4),de
call REWRITE_9SEC ;
9
pop bc
call SETHEADFILENAME
call REWRITE_9SEC ;
9
ret
CP_FREESEC xor a
ld (TRD_5D21),a
call COM_18 ;
call GET_TYPE_DISK
ld (TRD_5CDA),a
call FIND_FILENAME ;
jp z,FILE_EXISTS
call READ_9SEC ;
9
ld a,(TRD_5E09)
cp 0x80
jp z,ERR_DIRFULL
ld hl,TRD_5CED ;
ld de,TRD_5CE6 ; <C>-
, <B>-
ld bc,7
ldir
call READ_9SEC ;
9
ld a,(TRD_5D10) ;
ld (TRD_5CEA),a ;
ld de,(TRD_5CEA) ;
ld d,0
or a
ld hl,(TRD_5E0A)
sbc hl,de
jp c,loc_1C45
ld (TRD_5E0A),hl
ld hl,(TRD_5E06)
ld (TRD_5CEB),hl ;
ld (TRD_5D1F),hl
ret
COPY_ON1DSK_ ld a,(TRD_5CF1)
or a
ret z
ld a,(TRD_5D21)
or a
jr nz,loc_146F
call CLEAR_SCREEN ;
ld hl,TXT_INS_SRC ; "INSERT SOURCE DISK THEN PRESS Y"
call PRINT_MSG ;
loc_1465 call GET_KEYS ;
cp "Y"
jr nz,loc_1465
call CLEAR_DOWN_SCR ;
loc_146F ld a,(TRD_5CF1)
or a
ret z
push hl
ld hl,TRD_5D23
sub (hl)
pop hl
jr nc,loc_14CB
ld a,(TRD_5CF1)
ld b,a
xor a
ld (TRD_5CF1),a
loc_1484 push bc
ld (TRD_5CCE),a ; #00-
,#FF-
ld hl,(TRD_5CCF) ;
WORK_SP
push hl
ld de,(TRD_5CF2)
call SET_DSK_SOURCE
call COM_05 ;
ld hl,(TRD_5CF4)
ld (TRD_5CF2),hl
call CLEAR_SCREEN ;
ld hl,TXT_INS_DEST ; "INSERT DESTINATION DISK"
call PRINT_MSG ;
loc_14A5 call GET_KEYS ;
cp "Y"
jr nz,loc_14A5
call CLEAR_DOWN_SCR ;
ld a,(TRD_5D21)
or a
call nz,CP_FREESEC
pop hl
pop bc
ld de,(TRD_5CEB) ;
call SETUP_DSK_DEST
call COM_06
ld hl,(TRD_5CF4)
ld (TRD_5CEB),hl ;
jp COPY_ON1DSK_
loc_14CB ld (TRD_5CF1),a
push hl
ld hl,TRD_5D23
ld b,(hl)
pop hl
xor a
jp loc_1484
SET_DSK_SOURCE push hl
push de
call GET_TYPE_DISK
ld a,(TRD_5CD9) ;
<B> <C>
ld (hl),a
pop de
pop hl
ret
SETUP_DSK_DEST push hl
push de
call GET_TYPE_DISK
ld a,(TRD_5CDA)
ld (hl),a
pop de
pop hl
ret
CP_FREE_DEST xor a
ld (TRD_5D21),a
call COM_18 ;
call GET_TYPE_DISK
ld (TRD_5CDA),a
ld a,(TRD_5E08)
ld (TRD_5CE7),a ; <C>-
, <B>-
ld hl,640
cp 0x19
jr z,SAVE_SECS_DEST
ld hl,1280
cp 0x18
jr z,SAVE_SECS_DEST
cp 0x17
jr z,SAVE_SECS_DEST
ld hl,2560
cp 0x16
jr z,SAVE_SECS_DEST
jp SINTAX_ERROR
SAVE_SECS_DEST ld (TRD_5CDD),hl ;
ld bc,(TRD_5CDF)
sbc hl,bc
jp c,loc_1C45
ret
COPY_B call EXIT_IF_SINTAX
call RESERVED_RAM
ld hl,TXT_BACKUPDISK ; "BACKUP DISK"
call PRINT_MSG ;
ld hl,TXT_INS_SRC ; "INSERT SOURCE DISK THEN PRESS Y"
call PRINT_MSG ;
loc_153E call GET_KEYS ;
cp "Y"
jr nz,loc_153E
call CLEAR_DOWN_SCR ;
ld a,0xff
ld (TRD_5D21),a
call COM_18 ;
call GET_TYPE_DISK
ld (TRD_5CD9),a ;
<B> <C>
ld a,(TRD_5E08)
cp 0x19
ld hl,640
jr z,loc_1575
ld hl,1280
cp 0x18
jr z,loc_1575
cp 0x17
jr z,loc_1575
ld hl,2560
cp 0x16
jr z,loc_1575
jp SINTAX_ERROR
loc_1575 ld bc,(TRD_5E0A)
sbc hl,bc
ld (TRD_5CE5),hl ;
ld (TRD_5CDF),hl
ld hl,0
ld (TRD_5CE1),hl
ld (TRD_5CE3),hl
call COPY_SECTORS
call COM_18 ;
ld a,(TRD_5CE7) ; <C>-
, <B>-
ld (TRD_5E08),a
ld hl,(TRD_5CDD) ;
ld bc,(TRD_5CDF)
sbc hl,bc
ld (TRD_5E0A),hl
call SETUP_DSK_DEST
ld de,9
ld (TRD_5CF4),de
call REWRITE_9SEC ;
9
JP ERR_OK
CP_COPY_SECS ld hl,(TRD_5CE5) ;
ld a,h
or l
ret
COPY_SECTORS call CP_COPY_SECS
ret z
ld a,(TRD_5D21)
or a
jr nz,loc_15DB
call CLEAR_SCREEN ;
ld hl,TXT_BACKUPDISK ; "BACKUP DISK"
call PRINT_MSG ;
ld hl,TXT_INS_SRC ; "INSERT SOURCE DISK THEN PRESS Y"
call PRINT_MSG ;
loc_15D1 call GET_KEYS ;
cp "Y"
jr nz,loc_15D1
call CLEAR_DOWN_SCR ;
loc_15DB call CP_COPY_SECS
ret z
push bc
push hl
ld hl,TRD_5D23
ld c,(hl)
ld b,0
pop hl
sbc hl,bc
pop bc
jp nc,loc_1644
ld bc,(TRD_5CE5) ;
ld hl,0
ld (TRD_5CE5),hl ;
loc_15F8 push bc
ld hl,(TRD_5CCF) ;
WORK_SP
push hl
call SET_DSK_SOURCE
ld de,(TRD_5CE1)
ld b,c
call COM_05 ;
ld hl,(TRD_5CF4)
ld (TRD_5CE1),hl
call CLEAR_SCREEN ;
ld hl,TXT_BACKUPDISK ; "BACKUP DISK"
call PRINT_MSG ;
ld hl,TXT_INS_DEST ; "INSERT DESTINATION DISK"
call PRINT_MSG ;
loc_161D call GET_KEYS ;
cp "Y"
jr nz,loc_161D
call CLEAR_DOWN_SCR ;
ld a,(TRD_5D21)
or a
call nz,CP_FREE_DEST
pop hl
pop bc
ld de,(TRD_5CE3)
ld b,c
call SETUP_DSK_DEST
call COM_06
ld hl,(TRD_5CF4)
ld (TRD_5CE3),hl
jp COPY_SECTORS
loc_1644 ld (TRD_5CE5),hl ;
push hl
ld hl,TRD_5D23
ld c,(hl)
ld b,0
pop hl
xor a
jp loc_15F8
CP_ERASED_FILE call RDHEAD_FILENAME ;
ld a,(TRD_5CDD) ;
cp 1
ret
;
0X5CDD
COM_08 ld c,a
;
RDHEAD_FILENAME xor a
loc_165E push bc
call RD_HEAD_COPY
pop bc
ret
;
COM_09 ld c,a
call SETHEADFILENAME
jp REWRITE_9SEC ;
9
SETHEADFILENAME ld a,0xff
jr loc_165E
RESERVED_RAM ld a,0xff
ld (TRD_5D0E),a ; #FE-
BASIC,
TR-DOS
call CP_FREE_SECS
ld hl,(WORKSP)
ld (TRD_5CCF),hl ;
WORK_SP
jp CREATE_FREERAM
CP_FREE_SECS rst 0x20
dw 0x1f1a ;
ld hl,0xffff
sbc hl,bc
ld a,h
cp 0x10
jr nc,loc_168F
ld a,0x11
loc_168F dec a
ld (TRD_5D23),a
ld b,a
ld c,0
ret
ADD_FILESIZE ld (TRD_5CD7),hl ;
-
;
LD (TRD_5CDB),hl
ld de,(TRD_5CEA) ;
ld hl,(TRD_5CD9) ;
<B> <C>
ld d,0
add hl,de
ld (TRD_5CD9),hl ;
<B> <C>
ret
MOVE call EXIT_IF_SINTAX
call RESERVED_RAM
call COM_18 ;
ld a,(TRD_5E19)
or a
jp z,ERR_OK
ld hl,0
ld (TRD_5CD9),hl ;
<B> <C>
ld c,0xff
loc_16C3 inc c
call CP_ERASED_FILE
jr nz,loc_16C3
ld a,c
ld (TRD_5CD4),a
ld hl,(TRD_5CEB) ;
ld (TRD_5CD5),hl
call ADD_FILESIZE
loc_16D6 inc c
call CP_ERASED_FILE
jr z,loc_16D6
cp 0
jp nz,loc_1710
ld a,(TRD_5CD4)
ld c,a
loc_16E5 inc c
call CP_ERASED_FILE
cp 0
jr z,REINIT_9SEC
xor a
ld (TRD_5CDD),a ;
call WRHEAD_FILENAME ;
call ADD_FILESIZE
jr loc_16E5
DUPL 0X1710-$,0XFF
loc_1710 ld a,(TRD_5CEA) ;
ld (TRD_5CD3),a
ld (TRD_5CD1),a
ld hl,(TRD_5CEB) ;
ld (TRD_5CD5),hl
push bc
call MOVE_FILE
pop bc
ld hl,(TRD_5CF4)
ld (TRD_5CD5),hl
ld (TRD_5CEB),hl ;
xor a
ld (TRD_5CEA),a ;
ld a,(TRD_5CDD) ;
push af
ld a,1
ld (TRD_5CDD),a ;
call WRHEAD_FILENAME ;
pop af
ld (TRD_5CDD),a ;
ld a,(TRD_5CD4)
ld c,a
ld hl,(TRD_5CDB)
ld (TRD_5CEB),hl ;
ld a,(TRD_5CD1)
ld (TRD_5CEA),a ;
call WRHEAD_FILENAME ;
ld a,(TRD_5CD4)
inc a
ld c,a
call RDHEAD_FILENAME ;
ld hl,(TRD_5CD5)
ld (TRD_5CEB),hl ;
call WRHEAD_FILENAME ;
ld a,(TRD_5CD4)
ld c,a
jp loc_16C3
REINIT_9SEC ld hl,(TRD_5CCF) ;
WORK_SP
ld bc,0x1000
call DEL_WORKRAM
call READ_9SEC ;
9
ld hl,(TRD_5E0A)
ld de,(TRD_5CD9) ;
<B> <C>
add hl,de
ld (TRD_5E0A),hl
ld a,(TRD_5E09)
ld hl,TRD_5E19
sub (hl)
ld (TRD_5E09),a
ld (hl),0
ld hl,(TRD_5CD5)
ld (TRD_5E06),hl
push af
call REWRITE_9SEC ;
9
pop af
ld c,a
call RDHEAD_FILENAME ;
xor a
ld (TRD_5CDD),a ;
jp loc_569
MOVE_FILE ld a,(TRD_5CD3)
or a
ret z
push hl
ld hl,TRD_5D23
sub (hl)
pop hl
jr nc,loc_17DD
ld a,(TRD_5CD3)
ld b,a
xor a
ld (TRD_5CD3),a
loc_17BA push bc
ld hl,(TRD_5CCF) ;
WORK_SP
push hl
ld de,(TRD_5CD5)
call COM_05 ;
ld hl,(TRD_5CF4)
ld (TRD_5CD5),hl
pop hl
pop bc
ld de,(TRD_5CD7) ;
-
;
call COM_06
ld hl,(TRD_5CF4)
ld (TRD_5CD7),hl ;
-
;
jr MOVE_FILE
loc_17DD ld (TRD_5CD3),a
push hl
ld hl,TRD_5D23
ld b,(hl)
pop hl
xor a
jr loc_17BA
RD_HEAD_COPY push af
ld hl,TRD_5CCC ;
ld (hl),0
ld a,c
loc_17F0 sub 0x10
jr c,loc_17F7
inc (hl)
jr loc_17F0
loc_17F7 add a,0x10
ld c,a
push bc
call READ_NUM_SEC ;
pop bc
pop af
call FIND_HEAD_BUF
ld de,TRD_5CDD ;
ld bc,0x10
or a
jr z,loc_180D
ex de,hl
loc_180D
IF EMU
IF EMU3D2F=1
JP EMU_LDIR
ELSE
ldir
ret
ENDIF
ELSE
LDIR
RET
ENDIF
VERIFY ld a,0xff
ld (TRD_5CF9),a ;
2
LOAD call ZERO2HIGH_ERR
loc_1818 call LOAD_FILE
call EXIT_IF_SINTAX
ld a,0xff
ld (TRD_5D10),a ;
ld a,(TRD_5CF9) ;
2
cp 0xff
jp z,ERR_OK
ld a,(TRD_5CE5) ;
cp "B"
jp z,WORK4AUTORUN ;
jp ERR_OK
LOAD_FILE call GET_PARAMS
call EXIT_IF_SINTAX
call CP_PARAMS
jp RD_FILE
GET_LOAD_CODE ld hl,(CH_ADD)
inc hl
ld a,(hl)
cp 0x0d
ret z
ld a,1
ld (TRD_5CD6),a ; #FF-
call INPUT_PARAMS
ZERO2HIGH_ERR xor a
ld (TRD_5D10),a ;
ret
sub_1857 call INP_EXTFILENAME ;
ld a,"B"
cp b
jr nz,loc_1866
ld hl,(CH_ADD)
dec hl
ld (CH_ADD),hl
loc_1866 call INPUT_PARAMS
ld hl,(TRD_5CD9) ;
<B> <C>
ld (TRD_5CD7),hl ;
-
;
ld hl,(TRD_5CDB)
ld (TRD_5CD9),hl ;
<B> <C>
xor a
ld (TRD_5CD6),a ; #FF-
ret
GET_PARAMS call CP_SECOND_SYM
jp z,loc_27B
call SET_AND_PUT
call CP_HIGH_ERR
call nz,sub_1857
call GET_SYMSTR
cp __CODE
call z,GET_LOAD_CODE
cp __DATA
push af
call CP_HIGH_ERR
call z,INP_EXTFILENAME ;
pop af
call z,READ_MASSIV
call EXIT_IF_SINTAX
call FIND_FILE ;
FIND_RD_HEAD jp nz,ERR_NOFILES
call RDHEAD_FILENAME ;
ret
CP_PARAMS ld a,(TRD_5CD6)
or a
ld hl,(TRD_5CE6) ;
jr z,loc_18B7
ld hl,(TRD_5CD9) ;
loc_18B7 CALL ADR_START_COM
NOP
cp 3
ld a,(TRD_5CEA) ;
push de
ld de,(TRD_5CE8) ;
jr nz,loc_18CB
ld de,(TRD_5CDB) ;
loc_18CB ld b,a
ld (TRD_5CDB),de
ld a,(TRD_5CE5) ;
cp "C"
ld a,b
jr nz,loc_18FD
ld a,b
cp d
jr z,loc_18F6
dec a
cp d
ld a,b
jr z,loc_18F6
ld a,(TRD_5CD6) ; #FF-
cp 3
ld a,b
jr z,loc_18F6
xor a
ld (TRD_5CD6),a ; #FF-
ld d,b
ld e,0
ld (TRD_5CDB),de
jr loc_18F9
loc_18F6 call LOAD_FULLFILE
loc_18F9 ld a,b
call KOLWO_SECS
loc_18FD ld b,a
ld a,(TRD_5CE5) ;
cp "C"
pop de
ret z
push de
cp "B"
push af
call z,LOAD4BASIC
pop af
cp "D"
call z,LOAD4DATA
call LOAD_FULLFILE
ld a,(TRD_5CDC)
ld b,a
pop de
ret
LOAD_FULLFILE ld a,3
ld (TRD_5CD6),a ; #FF-
ret
RD_FILE call CP_HIGH_ERR
jr z,loc_192D
push af
call NUM_SEC_FILE
pop af
cp 0xff
loc_192D push af
call z,RD_SECTORS
pop af
jr z,loc_1937
jp COM_06
loc_1937 ld a,(TRD_5CD6) ; #FF-
cp 3
call z,RD_OR_VERIFY
ld hl,(E_LINE) ;
dec hl
ld (hl),0x80
ret
RD_OR_VERIFY ld a,(TRD_5CF9) ;
2
cp 0xff
jp nz,LOAD_END_FILE
ld a,(TRD_5CDB)
or a
ret z
ld c,a
ld b,1
ld de,(TRD_5CF4)
jr loc_196A
RD_SECTORS ld a,(TRD_5CF9) ;
2
cp 0xff
jp nz,COM_05 ;
ld (TRD_5CF4),de
ld c,0
loc_196A ld a,b
or a
ret z
ld (TRD_5CD7),hl ;
-
;
ld (TRD_5CD9),de ;
<B> <C>
loc_1974 push bc
ld b,1
ld de,(TRD_5CD9) ;
<B> <C>
ld hl,TRD_5D25
call COM_05 ;
ld hl,(TRD_5CF4)
ld (TRD_5CD9),hl ;
<B> <C>
pop bc
ld hl,(TRD_5CD7) ;
-
;
ld de,TRD_5D25
loc_198E ld a,(de)
cp (hl)
jr nz,loc_199D
inc hl
inc de
dec c
jr nz,loc_198E
ld (TRD_5CD7),hl ;
-
;
djnz loc_1974
ret
loc_199D ld hl,TXT_VERIFYERR ; "VERIFY ERROR."
ld a,0x0d
jp PRINT_TXTERR
PEEK ld a,0xff
jr loc_19AB
POKE ld a,0xee
loc_19AB ld (TRD_5D10),a ;
jp loc_1818
MERGE ld a,0xff
ld (TRD_5D1F),a
call GET_PARAMS
call EXIT_IF_SINTAX
ld a,(TRD_5CE5) ;
cp "B"
jp nz,SINTAX_ERROR
ld bc,(TRD_5CE6) ; <C>-
, <B>-
ld (TRD_5CDB),bc
push bc
inc bc
rst 0x20
dw 0x30 ;
ld (hl),0x80
ex de,hl
pop de
push hl
ld de,(TRD_5CEB) ;
call LOAD_FULLFILE
ld a,(TRD_5CDC)
ld b,a
call ZERO2HIGH_ERR
call RD_FILE
pop hl
ld de,(PROG)
rst 0x20
dw 0x08d2 ;
jp ERR_OK
CP_FREE4PROG ex de,hl
scf
sbc hl,de
ret c
ld de,0x0a
add hl,de
ld b,h
ld c,l
CP_FREE_RAM rst 0x20
dw 0x1f05 ;
ret
LOAD4BASIC ld de,(PROG)
ld hl,(E_LINE) ;
dec hl
push hl
push de
sbc hl,de
ld de,(TRD_5CE6) ; <C>-
, <B>-
push de
push hl
ld hl,0
ld a,(TRD_5CF9) ;
2
cp 0xff
jr z,loc_1A20
ld hl,5
loc_1A20 add hl,de
ld (TRD_5CDB),hl
pop hl
ld a,(TRD_5CF9) ;
2
cp 0xff
jr nz,loc_1A31
pop de
pop de
pop hl
jr loc_1A48
loc_1A31 call CP_FREE4PROG
pop bc
pop de
pop hl
push bc
rst 0x20
dw 0x19e5 ;
pop bc
call RESERV_RAM
inc hl
ld bc,(TRD_5CE8) ;
add hl,bc
ld (VARS),hl
loc_1A48 ld hl,(PROG)
ret
LOAD4DATA ld de,(TRD_5CE8) ;
ld (TRD_5CDB),de
ld hl,(TRD_5CD7) ;
-
;
ld a,(TRD_5CF9) ;
2
cp 0xff
ret z
ld hl,(TRD_5CD9) ;
<B> <C>
push hl
call CP_FREE4PROG
pop hl
ld a,h
or l
jr z,loc_1A79
ld hl,(TRD_5CD7) ;
-
;
dec hl
dec hl
dec hl
ld bc,(TRD_5CD9) ;
<B> <C>
inc bc
inc bc
inc bc
call DEL_WORKRAM
loc_1A79 ld hl,(E_LINE) ;
dec hl
ld bc,(TRD_5CE8) ;
push bc
inc bc
inc bc
inc bc
call RESERV_RAM
inc hl
ld a,(TRD_5CD2)
ld (hl),a
inc hl
pop de
ld (hl),e
inc hl
ld (hl),d
inc hl
ret
NUM_SEC_FILE ld a,(TRD_5CD9) ;
<B> <C>
ld c,b
ld b,a
ld a,c
cp b
jr c,loc_1AB6
ld a,b
or a
jp z,SINTAX_ERROR
dec b
jr z,loc_1AB0
ld a,0x10
loc_1AA7 inc e
cp e
jr nz,loc_1AAE
ld e,0
inc d
loc_1AAE djnz loc_1AA7
loc_1AB0 ld b,1
ld hl,(TRD_5CD7) ;
-
;
ret
loc_1AB6 ld hl,TXT_R_O
ld a,5
jp PRINT_TXTERR
CP_FILE_FREE call FIND_FILE ;
jp z,FILE_EXISTS
CP_FREE_ON_DSK call READ_9SEC ;
9
ld a,(TRD_5E09)
cp 0x80
jp z,ERR_DIRFULL
ret
SAVE call ZERO2HIGH_ERR
ld hl,0
ld (TRD_5CD1),hl
call SET_AND_PUT
call GET_SYMSTR
cp __CODE
jr z,loc_1B39
cp __LINE
jr nz,loc_1AF8
call SET_NUM_CHAN
call EXIT_IF_SINTAX
ld hl,(TRD_5CDB)
ld (TRD_5CD1),hl
ld hl,TRD_5CE5 ;
jr loc_1B1F
loc_1AF8 cp __SCREENS
jr nz,loc_1B0D
ld hl,0x4000
ld (TRD_5CD7),hl ;
-
;
ld hl,0x1b00
ld (TRD_5CD9),hl ;
<B> <C>
ld (TRD_5CDB),hl
jr loc_1B48
loc_1B0D call EXIT_IF_SINTAX
call GET_SYMSTR
ld hl,TRD_5CE5 ;
cp __DATA
jr z,loc_1B2C
cp 0x0d
jp nz,SINTAX_ERROR
loc_1B1F ld (hl),"B"
call CP_FILE_FREE
call DEL_5BYTES
loc_1B27 call SET_START_SIZE
jr loc_1B53
loc_1B2C ld (hl),"D"
call CP_FILE_FREE
call CP_MASSIV
jr nc,loc_1B53
jp c,SINTAX_ERROR
loc_1B39 call GET_START_SIZE
ld hl,(TRD_5CD9) ;
<B> <C>
ld (TRD_5CD7),hl ;
-
;
ld hl,(TRD_5CDB)
ld (TRD_5CD9),hl ;
<B> <C>
loc_1B48 call EXIT_IF_SINTAX
ld a,"C"
ld (TRD_5CE5),a ;
call CP_FILE_FREE
loc_1B53 call SAVE_FILE
jp loc_569
SAVE_FILE ld hl,(TRD_5CD7) ;
-
;
ld (TRD_5CE6),hl ; <C>-
, <B>-
ex de,hl
ld hl,(TRD_5CD9) ;
<B> <C>
ld a,l
or h
jp z,SINTAX_ERROR
ld a,l
or a
jr z,loc_1B6D
inc h
loc_1B6D ld a,h
ld (TRD_5CEA),a ;
ld e,a
ld d,0
ld hl,(TRD_5E0A)
sbc hl,de
jp c,loc_1C45
push hl
ld hl,(E_LINE) ;
ld (hl),__SCREENS
inc hl
ld de,(TRD_5CD1)
ld (hl),e
inc hl
ld (hl),d
ld hl,(TRD_5CDB)
ld (TRD_5CE8),hl ;
ld hl,(TRD_5E06)
ld (TRD_5CEB),hl ;
ex de,hl
ld hl,(TRD_5CE6) ; <C>-
, <B>-
ld a,(TRD_5CEA) ;
ld b,a
call COM_06
ld hl,(TRD_5CF4)
push hl
call READ_9SEC ;
9
pop hl
ld (TRD_5E06),hl
pop hl
ld (TRD_5E0A),hl
ld hl,TRD_5E09
ld a,(hl)
ld (TRD_5D1E),a
inc (hl)
push hl
call REWRITE_9SEC ;
9
pop hl
ld c,(hl)
dec c
ld a,(TRD_5CE5) ;
cp "B"
call z,SET_HEAD_STSZ
ret
SET_HEAD_STSZ ld hl,(E_LINE) ;
ld de,(PROG)
scf
sbc hl,de
ld (TRD_5CE6),hl ; <C>-
, <B>-
ld hl,(VARS)
sbc hl,de
ld (TRD_5CE8),hl ;
ret
SET_START_SIZE ld hl,(VARS)
ld de,(PROG)
sbc hl,de
ld (TRD_5CDB),hl
ld hl,(PROG)
ld (TRD_5CD7),hl ;
-
;
ld hl,(E_LINE) ;
inc hl
inc hl
inc hl
sbc hl,de
ld (TRD_5CD9),hl ;
<B> <C>
ret
READ_MASSIV call FIND_MASSIV
ret nc
ld hl,0
ld (TRD_5CD9),hl ;
<B> <C>
ld a,(TRD_5CF9) ;
2
cp 0xff
ret nz
jp loc_1C13
CP_MASSIV call FIND_MASSIV
ret nc
loc_1C13 ld a,0x0e
ld hl,TXT_ARRAYNOT ; "ARRAY NOT FOUND"
jp PRINT_TXTERR
FIND_MASSIV call GET_NEXT_SYM
call LOOK_VARS
set 7,c
ld a,c
ld (TRD_5CD2),a
jr nc,loc_1C2B
loc_1C29 scf
ret
loc_1C2B jr nz,loc_1C29
inc hl
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld (TRD_5CD7),hl ;
-
;
ld (TRD_5CDB),de
ld (TRD_5CD9),de ;
<B> <C>
call GET_NEXT_SYM
cp ")"
jr nz,loc_1C2B
ret
loc_1C45 ld hl,TXT_NOSPACE_
ld a,3
PRINT_TXTERR call PRINT_ERROR ;
jp END_COMAND
FILE_EXISTS ld hl,TXT_FILEEXISTS_
ld a,2
jr PRINT_TXTERR
SET_FILENAME ld hl,TRD_5CDD ;
ld b,8
loc_1C5C ld (hl)," "
inc hl
djnz loc_1C5C
call CP_ON_STKBOT
ex de,hl
call SETUP_DSK
ld a,c
or a
jp z,SINTAX_ERROR
cp 9
jr c,loc_1C73
ld c,8
loc_1C73 ld a,(hl)
cp " "
jp c,SINTAX_ERROR
ld de,TRD_5CDD ;
push bc
IF EMU
IF EMU3D2F=1
JP EMU_LDIR_RBC
RET
ELSE
ldir
pop bc
ret
ENDIF
ELSE
ldir
pop bc
ret
ENDIF
;
SETUP_DSK inc hl
ld a,(hl) ;
CP ":" ;
":",
jr nz,loc_1C98 ;
dec hl
ld a,(hl) ;
call NUMDSK2BYTE ;
push bc
push hl
call COM_01 ;
pop hl
pop bc
dec bc
dec bc ;
inc hl
inc hl ;
ret
loc_1C98 dec hl
ld a,(TRD_5D19) ;
push bc
push hl
call COM_01 ;
pop hl
pop bc
ret
FIND_HEAD_BUF ld l,c
ld h,0
add hl,hl
add hl,hl
add hl,hl
add hl,hl
ld bc,TRD_5D25
add hl,bc
ret
SET_CP_FILENAME call SET_FILENAME
;
FIND_FILENAME call RD_0SEC2BUF ;
0
ld b,0x80
ld c,0
loc_1CBA push bc
call FIND_HEAD_BUF
call CP_END_BUF
pop bc
push bc
ld a,c
cp 0x10
jr nz,loc_1CCD
pop bc
ld c,0
jr loc_1CBA
loc_1CCD ld de,TRD_5CDD ;
ld a,(TRD_5D06) ;
ld b,a
xor a
cp (hl)
jr nz,loc_1CDB
pop bc
jr loc_1CE4
loc_1CDB call COMPARE_B_SYM
pop bc
jr z,loc_1CE7
inc c
djnz loc_1CBA
loc_1CE4 or 0xff
ret
loc_1CE7 ld a,0x80
sub b
ld c,a
ld (TRD_5D1E),a
xor a
ret z
;
COM_0A call FIND_FILENAME ;
ld hl,TRD_5D0F ;
TR-DOS
ld (hl),c
ret z
ld (hl),0xff
ret
RETURN call EXIT_IF_SINTAX
CALL DELETE_BUFFER
res 3,(iy+1)
call RESTORE_SP ;
ld sp,(TRD_5D1C) ;
SP
exx ;LD HL,(ERR_SP)
ld hl,0x2758 ;DEC HL
exx ;LD A,0X12
dec hl ;CP (HL)
ld a,0x12 ;JR NZ,LOCRET_1D19
cp (hl) ;DEC HL
ret nz ;LD (ERR_SP),HL
dec hl ;LOCRET_1D19 RET
jp loc_0235
SINTAX_ERROR bit 7,(iy+0)
jr z,loc_1D25
ld a,0x0b
ld (ERR_NR),a
loc_1D25 inc a
ld hl,TXT_ERROR_
loc_1D29 call PRINT_ERROR ;
jp END_COMAND
loc_1D2F ld a,(ERR_NR)
ld hl,TXT_BREAK ; "*BREAK*"
cp 0x14
jr z,loc_1D29
cp 0x0c
jr z,loc_1D29
ld hl,TXT_OUTRAM ; "OUT OF RAM"
cp 3
jr z,loc_1D29
ld hl,TXT_ARRAYNOT ; "ARRAY NOT FOUND"
cp 1
jr z,loc_1D29
jr SINTAX_ERROR
RUN call ZERO2HIGH_ERR
call LOAD_FILE
call EXIT_IF_SINTAX
ld hl,(TRD_5CE6)
ld a,(TRD_5CE5) ;
cp "B"
JP RUN_FILE
push hl
ret
CLEAR_WORKSPACE ld hl,TRD_5D0E ; #FF-
BASIC,
TR-DOS
ld a,(hl)
loc_1D67 cp 0xff
ld (hl),0
ret nz
rst 0x20
dw 0x16bf ;
ret
CP_SINTAX bit 7,(iy+1)
ret
EXIT_IF_SINTAX call CP_SINTAX
ret nz
pop hl
ret
;
CHISLO2STKBOT call GET_NEXT_SYM
call BC2STKBOT
jr CP_SINTAX
;
0
OPEN_CHAN_0 xor a
OPENSTREAM rst 0x20
dw 0x1601 ;
ret
;
2
OPEN_CHAN_2 ld a,2
jr OPENSTREAM
GET_SYMSTR rst 0x20
dw 0x18 ; (CH_ADD)
ret
CALL2BASEDIT call OPEN_CHAN_0 ;
0
rst 0x20
dw 0x0f2c ;
ret
;
CLEAR_SCREEN rst 0x20
dw 0x0d6b ;
ret
LOOK_VARS rst 0x20
dw 0x28b2 ; LOOK-VARS.
ret
;
CLEAR_DOWN_SCR rst 0x20
dw 0x0d6e ;
ret
PRINT_CHISLO_A_ ld c,a
CONV2_2BYTES ld b,0
jp PRINT_CHISLO
PRINT_CHISLO push bc
DUPL 3,0
pop bc
rst 0x20
dw 0x1a1b ;
DUPL 3,0
ret
GET_STKBOT_ rst 0x20
dw 0x2bf1 ;
ret
FIND_LAST rst 0x20
dw 0x1e99 ;
ret
PUT_NUMDSK_STK rst 0x20
dw 0x1c8c
ret
BC2STKBOT rst 0x20
dw 0x1c82
ret
SET_CH_ADD ld hl,(TRD_5D11) ;
TR_DOS
inc hl
ld (CH_ADD),hl
ret
INP_2STR2STKBOT call SET_AND_PUT
loc_1DD0 call GET_SYMSTR
cp ","
jp nz,SINTAX_ERROR
call GET_NEXT_SYM
call PUT_NUMDSK_STK
ret
SET_AND_PUT call SET_CH_ADD
jp PUT_NUMDSK_STK
GET_START_SIZE call GET_SYMSTR
cp __CODE
ret nz
INPUT_PARAMS call CHISLO2STKBOT ;
jr z,loc_1DFB
call FIND_LAST
ld (TRD_5CD9),bc ;
<B> <C>
ld (TRD_5CDB),bc
loc_1DFB call GET_SYMSTR
cp ","
jr z,SET_NUM_CHAN
cp 0x0d
jp nz,SINTAX_ERROR
call EXIT_IF_SINTAX
ret
SET_NUM_CHAN call CHISLO2STKBOT ;
ret z
call FIND_LAST
ld (TRD_5CDB),bc
ld a,3
ld (TRD_5CD6),a ; #FF-
ret
DEL_5BYTES ld hl,(TRD_5D11) ;
TR_DOS
rst 0x20
dw 0x11a7 ;
P
ret
CREATE_FREERAM ld hl,(WORKSP)
rst 0x20
dw 0x30 ;
ret
GET_NEXT_SYM rst 0x20
dw 0x20 ;
ret
DEL_WORKRAM rst 0x20
dw 0x19e8 ;
ret
RESERV_RAM rst 0x20
dw 0x1655
ret
WR_NUM_TRACK call GET_NUM_TRACK ;FIX
ld a,h
IF EMU
RST32 _OUT_3F,__OUT_N_A+0X3F<<8
ELSE
out (0x3f),a
ENDIF
ret
;
COM_05 xor a
jr loc_1E64
WRHEAD_FILENAME call SETHEADFILENAME ;
REWRITE_9SEC ld de,(TRD_5CF4) ;
9
dec de
ld b,1
ld hl,TRD_5D25
;
COM_06 JR SAVE_SECTORS
DUPL 0X1E62-$,0
SAVE_SECTORS ld a,0xff
loc_1E64 ld (TRD_5CCE),a ; #00-
,#FF-
loc_1E67 ld (TRD_5CF4),de
push bc
push hl
IF EMU
CALL SV_LD_RAMDISK
ELSE
call WR_NUM_TRACK
ENDIF
pop hl
pop bc
xor a
or b
ret z
loc_1E75 push bc
push hl
call COM_04
ld a,(TRD_5CF4)
call COM_03
ld a,(TRD_5CF5)
call COM_02
ld a,(TRD_5CCE) ; #00-
,#FF-
or a
push af
call z,LOAD_SECTOR
pop af
call nz,SAVE_SECTOR
pop hl
ld de,0x100
add hl,de
push hl
ld a,0x10
ld hl,TRD_5CF4
inc (hl)
cp (hl)
jr nz,loc_1EA7
ld (hl),0
ld hl,TRD_5CF5
inc (hl)
loc_1EA7 pop hl
pop bc
djnz loc_1E75
ret
KOLWO_SECS push hl
ld h,a
ld l,0
push hl
sbc hl,de
call c,LOAD_FILLFILE
pop hl
ld a,h
pop hl
ret c
ld a,d
ret
LOAD_FILLFILE xor a
ld (TRD_5CD6),a ; #FF-
scf
ret
FORMAT ld hl,0xffff
LD (TRD_5CD7),hl ;
-
;
ld (TRD_5CD9),hl ;
<B> <C>
ld (TRD_5CD1),hl
call CP_SECOND_SYM
jp z,SINTAX_ERROR
call SET_AND_PUT
call EXIT_IF_SINTAX
call SET_FILENAME
DUPL 0X1EE1-$,0
CALL FORMAT_RAM
JR Z,END_FORMAT
ld a,80
loc_1EE8 ld (TRD_5CD7),a ;
-
;
call COM_00
call COM_17
call PAUSE_3_C_A
ld e,1
call FORMAT_TREK
call COM_16
ld e,0
call FORMAT_TREK
DUPL 0X1F08-$,0
call COM_17
call PAUSE_3_C_A
call loc_3EB5
ld a,0X80
ld (TRD_5CDA),a
loc_1F1B call FORMAT_DISK
END_FORMAT CALL CP_TYPEDRIVE
CALL Z,CREATE_TRDTABL
CALL CLEAR_DOWN_SCR
LD HL,TRD_5D25
LD DE,TRD_5D26
LD BC,0XFF
LD (HL),B
LDIR
JR loc_1F50
DUPL 0X1F50-$,0
loc_1F50 ld a,0x16
ld hl,2544
loc_1F55 ld (TRD_5E08),a
ld (TRD_5E0A),hl
ld a,1
ld (TRD_5E07),a
ld a,0X10
ld (TRD_5E0C),a
ld hl,TRD_5E0F
ld de,TRD_5E10
ld bc,8
ld (hl)," "
ldir
ld hl,TRD_5CDD ;
ld de,TRD_5E1A
ld bc,8
ldir ;
call COM_16
ld b,1
ld de,8
ld hl,TRD_5D25
call SAVE_SECTORS
ld a,(TRD_5CD6) ; #FF-
push af
xor a
ld (TRD_5CE5),a ;
ld hl,(TRD_5E0A)
ld (TRD_5CD7),hl ;
-
;
ld hl,TRD_5CDD ;
rst 0x18
ld a,0x0d
rst 0x10
ld hl,(TRD_5CD7) ;
-
;
pop af
push hl
ld d,0
ld e,a
sbc hl,de
ld b,h
ld c,l
call PRINT_CHISLO ;
ld a,"/"
rst 0x10
pop bc
call PRINT_CHISLO ;
jp END_COMAND
;
TABL_SECTORS DB 0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F,0X10,0X01
CP_DISK_TRACK call GET_TIME_HEAD ;
or 11h
ld b,a
ld a,32h
call HEAD_POSITION
ld a,2
call HEAD_POSITION
call PAUSE725779T
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(1Fh)
ENDIF
and 4
ld a,80 ; 80
jr z,loc_1FE7
ld a,40 ; 40
loc_1FE7 ld (TRD_5CD7),a ;
-
;
ret
; 0
COM_16 ld a,(TRD_5D16) ;
( #FF)
or 0x3c
loc_1FF0 ld (TRD_5D16),a ;
( #FF)
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
ret
; 1
COM_17 ld a,(TRD_5D16) ;
( #FF)
and 0x6f
jr loc_1FF0
FORMAT_TREK di
ld a,0xf4
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
ld hl,TABL_SECTORS
ld c,0x7f
loc_2007 ld b,0x0a
ld d,0x4e
call WRITE_C_D_B
ld b,0x0c
ld d,0
call WRITE_C_D_B
ld b,3
ld d,0xf5
call WRITE_C_D_B
ld d,0xfe
call WRITE_C_D_1
ld d,e
call WRITE_C_D_1
ld d,0
call WRITE_C_D_1
ld d,(hl)
call WRITE_C_D_1
ld d,1
call WRITE_C_D_1
ld d,0xf7
call WRITE_C_D_1
ld b,0x16
ld d,0x4e
call WRITE_C_D_B
ld b,0x0c
ld d,0
call WRITE_C_D_B
ld b,3
ld d,0xf5
call WRITE_C_D_B
ld d,0xfb
call WRITE_C_D_1
ld b,0
ld d,0
call WRITE_C_D_B
ld d,0xf7
call WRITE_C_D_1
ld b,0x3c
ld d,0x4e
call WRITE_C_D_B
ld a,(hl)
inc hl
cp 0x10
jr nz,loc_2007
ld b,0
call WRITE_C_D_B
jp m,loc_2076
call WRITE_C_D_B
loc_2076
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 0x40
jp nz,loc_3F39 ; READ ONLY
CP_NUM_TRACK ld a,(TRD_5CD8) ;
-
;
or a
ret nz
ld c,0x7f
ld a,e
IF EMU
RST32 _OUT_3F,__OUT_N_A+0X3F<<8
ELSE
out (0x3f),a
ENDIF
ld hl,TABL_SECTORS+1
loc_208A ld b,3
ld a,(hl)
IF EMU
RST32 _OUT_5F,__OUT_N_A+0X5F<<8
ELSE
out (0x5f),a
ENDIF
push hl
loc_2090 di
ld a,0x80
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
push bc
call RD_DATAPORT
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 0x7f
pop bc
jr z,loc_20A6
djnz loc_2090
ld hl,TRD_5CD6 ; #FF-
inc (hl)
loc_20A6 pop hl
ld a,(hl)
inc hl
cp 1
jr nz,loc_208A
ei
ret
WRITE_C_D_1 ld b,1
WRITE_C_D_B
IF EMU
RST32 _IN_FF,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr z,WRITE_C_D_B
ret m
IF EMU
RST32 _OUT_C_D,__OUT_C_D
ELSE
out (c),d
ENDIF
djnz WRITE_C_D_B
ret
FORMAT_DISK ld hl,TRD_5CD7 ;
-
;
ld b,(hl)
xor a
inc hl
ld (hl),a
ld e,0xff
loc_20C6 push bc
inc e
ld a,e
ld b,0x18
call HEAD_POSITION
call COM_16
CALL loc_20D1
DUPL 0X20DE-$,0
call FORMAT_TREK
loc_20E1 pop bc
djnz loc_20C6
ret
DELETE_BUF push af
ld a,(TRD_5CF8) ;
2
cp 0xff
jr z,loc_211C
pop af
jp DEL_BUF
;
INTERFACE1
CP_INTERFACE1 push af
ld a,(TRD_5CB6) ;
INTERFACE1
cp 0F4h
jr z,loc_211C
xor a
ld hl,TRD_5D18
or (hl)
ld (hl),0FFh
jr z,loc_211C
ld a,(TRD_5D0C)
or a
ld hl,TRD_5CC3
ld de,TRD_5D33
jr nz,loc_2111
ld de,TRD_5E34
loc_2111 ld b,2Dh
loc_2113 ld c,(hl)
ld a,(de)
ld (hl),a
ld a,c
ld (de),a
inc hl
inc de
djnz loc_2113
loc_211C pop af
ret
;[
]
CLRBUF_EDITOR CALL CLRBUF_EDITOR2
ld (hl),0x0d
ld (K_CUR),hl
inc hl
ld (hl),0x80
ret
;
RESTORE_COMSTR ld de,(E_LINE) ;
ld hl,TRD_5D20 ;
3
call LDI3_HL2DE ;
3
ret
;
GET_COMMAND ld a,(TRD_5D0F) ;
TR-DOS
or a
push af
call nz,RESTORE_COMSTR ;
,
3
pop af
call z,CLRBUF_EDITOR ;
,
ld hl,(E_LINE) ;
call PRINT_0D
ld a,(TRD_5D19) ;
IF EMU
call GET_COMMAND2
ELSE
add a,"A"
rst 0x10
ENDIF
ld a,">"
rst 0x10
ld hl,ERR_NR
ld (hl),0xff
jp CALL2BASEDIT
sub_2158 call GET_NEXT_SYM
call GET_SYMSTR
cp ","
jp nz,SINTAX_ERROR
ld hl,(TRD_5CDB)
ld (TRD_5CD9),hl ;
<B> <C>
call SET_NUM_CHAN
call EXIT_IF_SINTAX
ld hl,(TRD_5CDB)
ld a,h
or a
jp nz,SINTAX_ERROR
inc hl
ld (TRD_5CD7),hl ;
-
;
ld hl,(TRD_5CD9) ;
<B> <C>
ld (TRD_5CDB),hl
ret
OPEN ld hl,(TRD_5D11) ;
TR_DOS
ld (CH_ADD),hl
call SET_NUM_CHAN
call loc_1DD0
loc_218E call GET_SYMSTR
cp "A"
jr nc,loc_219A
call GET_NEXT_SYM
jr loc_218E
loc_219A cp 0xa5
push af
call z,sub_2158
pop af
jr z,loc_21AE
and 0xdf
cp "R"
jr z,loc_21AE
cp "W"
jp nz,SINTAX_ERROR
loc_21AE ld (TRD_5D09),a
call EXIT_IF_SINTAX
ld a,"#"
ld (TRD_5CE5),a ;
ld a,0
ld (TRD_5CE6),a ; <C>-
, <B>-
call FIND_ENDFILE
push af
call CP_STREAMS
pop af
push af
call nz,CREATE_BLOCK0
pop af
call OPEN_STREAM
ld hl,(TRD_5D11) ;
TR_DOS
ld bc,0x124
add hl,bc
ld (TRD_5D11),hl ;
TR_DOS
jp END_COMAND
FIND_ENDFILE ld a,0x0a
ld (TRD_5D06),a ;
call SET_CP_FILENAME
push af
call COM_18 ;
pop af
jr nz,loc_2206
ld a,(TRD_5D09)
cp "R"
jr z,loc_2201
loc_21F1 ld hl,TRD_5CE6 ; <C>-
, <B>-
inc (hl)
call FIND_FILENAME ;
jr z,loc_21F1
ld hl,TRD_5CE6 ; <C>-
, <B>-
dec (hl)
call FIND_FILENAME ;
loc_2201 call RDHEAD_FILENAME ;
xor a
ret
loc_2206 ld a,(TRD_5D09)
cp "R"
ret nz
jp ERR_NOFILES
CP_STREAMS ld a,(TRD_5CDB)
rst 0x20
dw 0x1727
ld a,b
or c
jp nz,loc_221B
ret
loc_221B ld a,0x19
ld (ERR_NR),A
ld hl,TXT_STREAMOPEN ; "STREAM OPENED"
ld a,0x0a
loc_2225 jp PRINT_TXTERR
loc_2228 ld a,0x0b
ld hl,TXT_NODISKFILE ; "NOT DISK FILE"
jr loc_2225
INITFREEACCESS push hl
ld c,0x20
rst 0x28
ld a,(TRD_5CD7) ;
-
;
ld (hl),a
inc hl
xor a
ld (hl),a
inc hl
ld (hl),a
inc hl
ld (hl),a
ld a,0x7f
pop hl
ret
OPEN_STREAM push af
call CP_STREAMS
ex de,hl
ld hl,(PROG)
ld bc,(CHANS)
sbc hl,bc
ex de,hl
ld (hl),e
inc hl
ld (hl),d
call CREATE_HEADCHAN
ld a,(TRD_5D09)
cp 0xa5
call z,INITFREEACCESS
jr z,loc_226B
ld a,(TRD_5D09)
cp "R"
ld a,0xff
jr nz,loc_226B
xor a
loc_226B ld (hl),a
pop af
jp loc_2270
loc_2270 push af
ld bc,0x14
add hl,bc
push hl
call GET_TEKSECFILE
pop hl
inc hl
ld b,1
pop af
or a
push af
call nz,COM_06
pop af
call z,COM_05 ;
ret
CREATE_BLOCK0 ld hl,(TRD_5CD7) ;
-
;
push hl
ld hl,0x2000
ld (TRD_5CD7),hl ;
-
;
call CREATE_BLOCK
pop hl
ld (TRD_5CD7),hl ;
-
;
ret
CREATE_BLOCK ld hl,0x1000
ld (TRD_5CD9),hl ;
<B> <C>
call CP_FREE_ON_DSK
call SAVE_FILE
ld hl,0
ld (TRD_5CE8),hl ;
call SETHEADFILENAME
jp REWRITE_9SEC ;
9
CREATE_HEADCHAN ld hl,(PROG)
dec hl
ld (CURCHL),hl
push hl
ld bc,0x124
call RESERV_RAM
ld a,0
ld b,0
loc_22C4 ld (de),a
dec de
djnz loc_22C4
pop hl
push hl
ld de,loc_3D0E
ld (hl),e
inc hl
ld (hl),d
inc hl
ld de,loc_3D06
ld (hl),e
inc hl
ld (hl),d
inc hl
ld (hl),"D"
inc hl
inc hl
inc hl
inc hl
inc hl
ld (hl),"$"
inc hl
ld (hl),1
inc hl
ld a,(TRD_5CF6) ;
ld (hl),a
inc hl
ld a,(TRD_5D1E)
ld (hl),a
inc hl
ld a,(TRD_5D09)
cp "R"
ld (hl),0
jr z,loc_22FC
ld a,(TRD_5CE8) ;
ld (hl),a
loc_22FC inc hl
ld (hl),b
jr z,loc_2304
ld a,(TRD_5CE9) ;
ld (hl),a
loc_2304 inc hl
ex de,hl
pop hl
push de
ld de,0x10
add hl,de
ex de,hl
ld hl,TRD_5CDD ;
ld bc,0x10
IF EMU
IF EMU3D2F=1
JP EMU_LDIR_RHL
ELSE
ldir
pop hl
ENDIF
ELSE
ldir
pop hl
ENDIF
ret
GET_ADRTEKSYM ld c,0x0d
rst 0x28
ld c,(hl)
rst 0x28
ld bc,0x24
add hl,bc
ret
GET_ADRTEKFRG ld c,0x24
ADR_OPEN_CHAN ld b,0
ld hl,(CURCHL)
add hl,bc
ret
CP_ENDOFSECTOR ld c,0x0d
rst 0x28
inc (hl)
ret nz
push hl
call SET_DISK
call SAVE_TEKSECTOR ;
pop hl
inc hl
inc (hl)
push hl
call LOADINGSECTOR
pop hl
ld a,0x10
cp (hl)
ret nz
push hl
ld c,0x0f
rst 0x28
ld a,(hl)
cp 0x7f
pop hl
jr z,loc_2358
ld hl,(CURCHL)
call SAVE_HEAD_BLK
ld c,0x0e
rst 0x28
jp loc_2379
loc_2358 call FIND_NEXT_BLK
push af
call z,LOADINGSECTOR
ld c,0x0e
rst 0x28
pop af
call nz,CREATE_NEWBLOCK
ret
sub_2367 ld (hl),0
ld c,0x19
rst 0x28
ld d,0x20
ld e,(hl)
ret
CREATE_NEWBLOCK call sub_2367
ld (TRD_5CD7),de ;
-
;
jr CREATE_BLK
loc_2379 call sub_2367
inc e
ld (TRD_5CD7),de ;
-
;
CREATE_BLK call CREATE_BLOCK
call DEL_BUF
ld c,0x10
rst 0x28
ex de,hl
ld hl,TRD_5CDD ;
ld bc,0x10
ldir
ld c,0x0c
rst 0x28
ld a,(TRD_5D1E)
ld (hl),a
ret
FIND_END_SEC ld c,0x0d
rst 0x28
inc (hl)
ret nz
inc hl
inc (hl)
push hl
call SET_DISK
ld c,0x23
rst 0x28
ld a,(hl)
or a
jr z,loc_23B6
pop hl
push hl
dec (hl)
call SAVE_TEKSECTOR ;
pop hl
push hl
inc (hl)
loc_23B6 call LOADINGSECTOR
pop hl
ld a,0x10
cp (hl)
call z,OPEN_NEXT_BLK
ret
OPEN_NEXT_BLK call FIND_NEXT_BLK
push af
call DEL_BUF
pop af
jp nz,ERR_ENDOFFILE
jp LOADINGSECTOR
FIND_NEXT_BLK ld (hl),0
ld c,0x19
rst 0x28
inc (hl)
ld c,0x10
rst 0x28
ld de,TRD_5CDD ;
ld bc,0x10
ldir
call FIND_FILENAME ;
ret nz
OPEN_BLK call RDHEAD_FILENAME ;
ld c,0x10
rst 0x28
ex de,hl
ld hl,TRD_5CDD ;
ld bc,0x10
ldir
ld c,0x0c
rst 0x28
ld a,(TRD_5D1E)
ld (hl),a
xor a
ret
;
SAVE_TEKSECTOR call GET_TEKSECFILE
call GET_ADRTEKFRG
ld b,1
call COM_06
ld c,0x0f
rst 0x28
ld a,(hl)
cp 0x7f
ret z
call GET_ADRTEKFRG
xor a
ld b,a
loc_2413 ld (hl),a
inc hl
djnz loc_2413
ret
LOADINGSECTOR call GET_TEKSECFILE
call GET_ADRTEKFRG
ld b,1
jp COM_05 ;
GET_TEKSECFILE ld hl,(CURCHL)
ld bc,0x1e
add hl,bc
ld e,(hl)
inc hl
ld d,(hl)
ld c,0x0e
rst 0x28
ld b,(hl)
dec b
inc b
push af
ld a,0x10
jr z,loc_2441
loc_2438 inc e
cp e
jr nz,loc_243F
ld e,0
inc d
loc_243F djnz loc_2438
loc_2441 pop af
ret
SET_DISK ld c,0x0b
rst 0x28
ld a,(hl)
jp COM_01 ;
OUT_SYM2FILE ld hl,TRD_5CC2 ;
#C9.
TR-DOS BASIC
push hl
DUPL 4,0
push af
DUPL 3,0
ld a,0x0a
ld (TRD_5D06),a ;
pop af
call WORK4FREEACCESS
push af
call CP_FILE_OPENED
jp z,ERR_INVALID_IO
pop af
call GET_ADRTEKSYM
ld (hl),a
jp CP_ENDOFSECTOR
CP_END_BLK ld c,0x0d
rst 0x28
ld a,(hl)
ld bc,0x0e
add hl,bc
cp (hl)
ret nz
ld c,0x0e
rst 0x28
ld a,(hl)
ld bc,0x0e
add hl,bc
cp (hl)
ret nz
ld hl,TRD_5CB6 ;
INTERFACE1
ld a,(hl)
cp 0xf4
jr z,ERR_ENDOFFILE
bit 4,(hl)
jr z,ERR_ENDOFFILE
or 1
pop hl
ret
ERR_ENDOFFILE ld a,7
loc_2494 ld (ERR_NR),a
call DELETE_BUF
rst 0x20
dw 0x0058
ret
ERR_INVALID_IO ld a,0x17
jr loc_2494
WORK4FREEACCESS ld d,a
ld c,0x0f
rst 0x28
ld a,(hl)
cp 0x7f
ld a,d
ret nz
ld bc,0x13
add hl,bc
ld a,(hl)
or a
ld a,d
jr nz,loc_24D5
dec hl
ld a,(hl)
or a
jr nz,loc_24C2
push bc
push hl
push de
call W16B2WORKSP
pop de
pop hl
pop bc
loc_24C2 ld c,(hl)
ld a,d
ex de,hl
ld hl,(TRD_5CCF) ;
WORK_SP
add hl,bc
cp 6
ld (hl),a
call z,WORK_NUMSAVE
ld c,0x21
rst 0x28
inc (hl)
pop hl
ret
loc_24D5 dec hl
ld a,(hl)
dec hl
inc a
cp (hl)
inc hl
inc (hl)
push hl
push af
ld c,0x23
rst 0x28
ld (hl),0xff
pop af
pop hl
jr c,loc_24EE
ld a,d
cp 0x0d
jr z,loc_24F2
pop bc
ret
loc_24EE ld a,d
cp 0x0d
ret nz
loc_24F2 xor a
ld (hl),a
inc hl
ld (hl),a
ld a,d
ret
W16B2WORKSP ld hl,(WORKSP)
ld (TRD_5CCF),hl ;
WORK_SP
ld bc,0x10
jp CREATE_FREERAM
WORK_NUMSAVE ld (hl),0x0d
ld hl,(CH_ADD)
ld (TRD_5CD7),hl ;
-
;
ld hl,(TRD_5CCF) ;
WORK_SP
ld (CH_ADD),hl
ld hl,FLAGS
res 7,(hl)
call BC2STKBOT
ld hl,FLAGS
set 7,(hl)
ld hl,(TRD_5CCF) ;
WORK_SP
ld (CH_ADD),hl
call BC2STKBOT
call FIND_LAST
push bc
pop de
ld c,0x20
rst 0x28
ld b,(hl)
xor a
ld hl,0
ld (TRD_5CDB),hl
loc_2538 add hl,de
jr nc,loc_2544
push hl
ld hl,(TRD_5CDB)
inc hl
ld (TRD_5CDB),HL
pop hl
loc_2544 djnz loc_2538
ld (TRD_5CD9),HL ;
<B> <C>
ld a,(TRD_5CDB)
ld hl,TRD_5CDA
rrd
and 0x0f
ld (TRD_5CDB),a
ld hl,(TRD_5CD7) ;
-
;
ld (CH_ADD),hl
call OPEN_SAVED
ld c,0x21
rst 0x28
ld a,0xff
ld (hl),a
inc hl
ld (hl),a
ret
OPEN_SAVED ld c,0x19
rst 0x28
ld a,(TRD_5CDA)
cp (hl)
jp nz,loc_2584
ld c,0x0e
rst 0x28
ld a,(TRD_5CDB)
cp (hl)
jp nz,loc_25A7
loc_257C ld c,0x0d
rst 0x28
ld a,(TRD_5CD9) ;
<B> <C>
ld (hl),a
ret
loc_2584 call CPANDZERO23
call nz,SAVE_TEK_SEC
ld a,(TRD_5CDA)
ld c,0x19
rst 0x28
ld (hl),a
ld c,0x10
rst 0x28
ld de,TRD_5CDD ;
ld bc,0x10
ldir
call FIND_FILENAME ;
jp nz,loc_25D2
call OPEN_BLK
jr loc_25AD
loc_25A7 call CPANDZERO23
call nz,SAVE_TEK_SEC
loc_25AD ld a,(TRD_5CDB)
ld c,0x0e
rst 0x28
ld (hl),a
push hl
call SET_DISK
call LOADINGSECTOR
pop hl
dec hl
ld a,(TRD_5CD9) ;
<B> <C>
ld (hl),a
jr loc_257C
SAVE_TEK_SEC call SET_DISK
call SAVE_TEKSECTOR ;
ret
CPANDZERO23 ld c,0x23
rst 0x28
ld a,(hl)
or a
ld (hl),0
ret
loc_25D2 ld hl,(TRD_5CDA)
ld h,0x20
ld (TRD_5CD7),hl ;
-
;
ld hl,(TRD_5CD9) ;
<B> <C>
push hl
ld hl,(TRD_5CDB)
push hl
call CREATE_BLK
pop hl
ld (TRD_5CDB),hl
pop hl
ld (TRD_5CD9),hl ;
<B> <C>
jr loc_25AD
INPUTDATAFILE DUPL 3,0
ld hl,TV_FLAG
res 3,(hl)
ld hl,(ERR_SP)
ld e,(hl)
inc hl
ld d,(hl)
or a
ld hl,0x107F
sbc hl,de
jr nz,loc_2626
ld sp,(ERR_SP)
pop de
pop de
ld (ERR_SP),de
loc_260F call INPUT_SYM_FILE
jr c,loc_261D
loc_2614 ld hl,TRD_5CC2 ;
#C9.
TR-DOS BASIC
push hl
ld hl,DELETE_BUF
push hl
ret
loc_261D cp 0x0d
jr z,loc_2614
rst 0x20
dw 0x0f85
jr loc_260F
loc_2626 call INPUT_SYM_FILE
jr loc_2614
INPUT_SYM_FILE ld a,0x0a
ld (TRD_5D06),a ;
call CP_FILE_OPENED
jr z,loc_2642
cp 0x7f
jp nz,ERR_INVALID_IO
ld bc,0x13
add hl,bc
ld (hl),0
jr loc_2645
loc_2642 call CP_END_BLK
loc_2645 call GET_ADRTEKSYM
ld a,(hl)
push af
call FIND_END_SEC
pop af
scf
ret
CP_FILE_OPENED ld c,0x0f
rst 0x28
ld a,(hl)
or a
ret
CLOSE ld hl,(TRD_5D11) ;
TR_DOS
ld (CH_ADD),hl
call SET_NUM_CHAN
call EXIT_IF_SINTAX
ld a,(TRD_5CDB)
rst 0x20
dw 0x1727
ld a,b
or c
jp z,END_COMAND
push hl
ld hl,(CHANS)
add hl,bc
ld a,(hl)
ld hl,loc_3D0E
cp h
pop hl
jp nz,loc_2228
ld (hl),0
inc hl
ld (hl),0
ld (TRD_5CD9),bc ;
<B> <C>
ld hl,(CHANS)
add hl,bc
dec hl
ld (TRD_5CD7),hl ;
-
;
call sub_26CE
ld hl,(TRD_5CD7) ;
-
;
ld bc,0x124
call DEL_WORKRAM
ld hl,STRMS
ld b,0x10
loc_269D push bc
ld bc,(TRD_5CD9) ;
<B> <C>
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl
sbc hl,bc
ex de,hl
jr c,loc_26BC
ld d,(hl)
dec hl
ld e,(hl)
inc hl
push hl
ex de,hl
ld bc,0x124
sbc hl,bc
ex de,hl
pop hl
ld (hl),d
dec hl
ld (hl),e
inc hl
loc_26BC inc hl
pop bc
djnz loc_269D
ld hl,(TRD_5D11) ;
TR_DOS
ld bc,0x124
sbc hl,bc
ld (TRD_5D11),hl ;
TR_DOS
jp END_COMAND
sub_26CE ld bc,0x0f
add hl,bc
ld a,(hl)
or a
ret z
ld hl,(TRD_5CD7) ;
-
;
ld (CURCHL),hl
call SAVE_HEAD_BLK
jp SAVE_TEKSECTOR ;
SAVE_HEAD_BLK ld bc,0x0d
add hl,bc
ld e,(hl)
inc hl
ld d,(hl)
ld bc,0x0d
add hl,bc
ld (hl),e
inc hl
ld (hl),d
ld c,0x10
rst 0x28
ld de,TRD_5CDD ;
ld bc,0x10
ldir
call SET_DISK
ld c,0x0c
rst 0x28
ld c,(hl)
call SETHEADFILENAME
jp REWRITE_9SEC ;
9
PRINT_MSG ld a,(hl)
or a
ret z
and 0x7f
rst 0x10
bit 7,(hl)
ret nz
inc hl
jr PRINT_MSG ;
COMPARE_B_SYM ld a,(de)
cp (hl)
ret nz
inc de
inc hl
djnz COMPARE_B_SYM
ret
loc_271B ld hl,TXT_NODISK_ ; "NO DISK"
ld a,6
jp PRINT_TXTERR
ERR_DIRFULL ld hl,TXT_DIRFULL ; "DIRECTORY FULL"
ld a,4
jp PRINT_TXTERR
SET_TAPELDERR ld a,0x1a
jr SET_NUM_ERR
ld a,0x12
SET_NUM_ERR ld (ERR_NR),a
ret
ld a,3
jr SET_NUM_ERR
;
COM_15 xor a
ld (TRD_5CD8),a ;
-
;
ld (TRD_5CD6),a ; #FF-
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
ld (TRD_5CCD),a ; #80-
ld e,d
push de
ld a,e
IF EMU
RST32 _OUT_7F,__OUT_N_A+0X7F<<8
ELSE
out (0x7f),a
ENDIF
ld a,0x18
call COM2VG_WAIT
ld a,(TRD_5CCD) ; #80-
and 0x80
call nz,PAUSE_3_C_A
pop de
call CP_NUM_TRACK
ld a,(TRD_5CD6) ; #FF-
or a
ret z
ld a,7
ld (TRD_5D0F),a ;
TR-DOS
ret
TXT_OK_ DZ "O.K."
TXT_VERIFYERR DB "Verify Error.",0X8D
TXT_BACKUPDISK DB "BACKUP DISK",0X8D
TXT_INS_DEST DB "Insert Destination disk",0X0D
DZ "then press Y"
TXT_INS_SRC DZ "Insert Source disk then press Y"
TXT_BREAK DB "*BREAK*",0X8D
TXT_OUTRAM DB "Out of RAM",0X8D
TXT_ARRAYNOT DB "Array not found",0X8D
TXT_DIRFULL DB "Directory full",0X8D
TXT_NODISK_ DB "No disk",0X8D
TXT_STREAMOPEN DB "Stream opened",0X8D
TXT_NODISKFILE DB "Not disk file",0X8D
TXT_FILEEXIST DB "File exists",0X0D
DC "Over write?(Y/N)"
CALL_3D13 push af
push bc
ld (TRD_5D04),de
ld (TRD_5D02),hl
; CALL SET_RWPORT0
LD A,0XFF
LD (TRD_5D15),A ;
0,
TR-DOS.
LD (TRD_5D1F),A
pop bc
pop af
ld hl,CP_ERROR ;
ld (TRD_5D1A),hl ;
ld hl,0
add hl,sp
ld (TRD_5D1C),hl ;
dec hl
dec hl
ld sp,hl
push af
call MARK_SP ;
ld hl,COMAND_TBL
LD A,C
CP LOW ((ECOMAND_TBL-COMAND_TBL)/2)+1
JP NC,END_COMAND
ADD A,A
LD E,A
POP AF
LD D,0
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD HL,END_COMAND
PUSH HL
PUSH DE
LD HL,(TRD_5D02)
LD DE,(TRD_5D04)
RET
COMAND_TBL DW COM_00 ;
93
DW COM_01 ;
DW COM_02 ;
DW COM_03 ;
DW COM_04 ;
DW COM_05 ;
DW COM_06 ;
DW COM_07 ;
DW COM_08 ;
0X5CDD
DW COM_09 ;
DW COM_0A ;
DW COM_0B ;
DW COM_0C ;
DW END_COMAND
DW COM_0E ;
DW END_COMAND
DW END_COMAND
DW END_COMAND
DW COM_12 ;
DW COM_13 ;
0X5CDD
DW COM_14 ;
0X5CDD
DW COM_15 ;
DW COM_16 ; 0
DW COM_17 ; 1
DW COM_18 ;
ECOMAND_TBL
DUPL 0X28D8-$,0XFF
;
COM_07 push af
call COM_18 ;
pop af
jp loc_479
;
0X5CDD
COM_13 xor a
jr loc_28E5
;
0X5CDD
COM_14 ld a,0xff
loc_28E5 ld de,TRD_5CDD ;
ld bc,0x10
or a
jr z,loc_28EF
ex de,hl
loc_28EF
IF EMU
IF EMU3D2F=1
JP EMU_LDIR
ELSE
ldir
ret
ENDIF
ELSE
ldir
ret
ENDIF
;
COM_0C call COM_18 ;
call CP_FREE_ON_DSK
jp loc_1B27
;
COM_0B ld (TRD_5CD7),hl ;
-
;
ld (TRD_5CD9),de ;
<B> <C>
ld (TRD_5CDB),de
call COM_18 ;
call CP_FREE_ON_DSK
jp loc_1B53
;
COM_0E or a
ld (TRD_5CD6),a ; #FF-
ld (TRD_5CD9),hl ;
<B> <C>
ld (TRD_5CDB),de
call FIND_FILENAME ;
call FIND_RD_HEAD
call CP_PARAMS ;WDC
jp RD_FILE
;
COM_12 call COM_18 ;
call FIND_FILENAME ;
jp ERASE_FILES
;
FIND_FILE call SET_FILENAME
call COM_18 ;
jp FIND_FILENAME ;
;
PRINT_FILENAME push bc
ld b,8
loc_293B ld a,(hl)
rst 0x10
inc hl
djnz loc_293B
ld a,"<"
rst 0x10
ld a,(hl)
rst 0x10
ld a,">"
rst 0x10
pop bc
ret
;
CREATE_BUF push hl
push de
push bc
push af
ld hl,TRD_5D0C
ld a,(hl)
or a
jr z,loc_2992
push hl
ld bc,0x101
push bc
call CP_FREE_RAM
pop bc
pop hl
ld (hl),0
ld hl,TRD_5D25
call RESERV_RAM
ld hl,(TRD_5D11) ;
TR_DOS
ld bc,0x101
add hl,bc
jr loc_298F
;
,
DEL_BUF push hl
push de
push bc
push af
ld hl,TRD_5D0C
ld a,(hl)
or a
jr nz,loc_2992
ld (hl),0xff
ld hl,TRD_5D25
ld bc,0x101
call DEL_WORKRAM
or a
ld bc,0x101
ld hl,(TRD_5D11) ;
TR_DOS
sbc hl,bc
loc_298F ld (TRD_5D11),hl ;
TR_DOS
loc_2992 pop af
pop bc
pop de
pop hl
ret
COM_40 xor a
loc_2998 ld (TRD_5CD7),a ;
-
;
call EXIT_IF_SINTAX ;
,
call CP_SECOND_SYM ;
jp z,SINTAX_ERROR
call GET_TYPE_DISK ;
ld a,(TRD_5CD7) ;
-
;
ld (hl),a
jp ERR_OK
COM_80 ld a,80h
jr loc_2998
TXT_ERROR_ DB 0X0D,"*ERROR*",0X8D
TXT_NOSPACE_ DB 0X0D,"No space",0X8D
TXT_FILEEXISTS_ DB 0X0D,"File exists",0X8D
TXT_FREE_ DB " Free",0X8D
READ_ONLY DB 0X0D
DC "Read Only"
TXT_DISCERROR_ DB 0X0D
DC "Disc Error"
TXT_R_O DB 0X0D
DC "Rec. O/F"
TXT_TITLE_ DC "Title: "
TXT_RIA_ DB 0X0D
DZ "Retry,Abort,Ignore?"
TXT_TRK_ DB 0X0D
DC "Trk "
TXT_SEC_ DC " sec "
TXT_DELFILE_ DB " Del. File",0X8D
TXT_NOFILES_ DB 0X0D
TXT_NOFILES DB "No File(s)",0X8D,0
sub_2A35 ld hl,loc_2A41
ld de,4080h
ld bc,20h
IF EMU
IF EMU3D2F=1
JP EMU_LDIR
ELSE
ldir
ret
ENDIF
ELSE
ldir
ret
ENDIF
loc_2A41 ld a,(loc_3B5)
cp 0F3h
ld a,10h
jr z,loc_2A4B
xor a
loc_2A4B ld (KSTATE1),a
ld bc,7FFDh
ld a,10h
IF EMU
JP LOC_2A53_
ELSE
out (c),a
ret
ENDIF
MAGIC push af
push bc
push de
push hl
push ix
push iy
exx
push bc
push de
push hl
ex af,af'
push af
ld a,i
push af
ld a,r
push af
ld hl,0
add hl,sp
push hl
ld a,3Ch
IF EMU
RST30 _OUT_FF
ELSE
out (0FFh),a
ENDIF
ld a,3Fh
ld i,a
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(1Fh)
ENDIF
and 80h
rrca
rrca
rrca
ld (KSTATE1),a
call sub_2F65
call PAUSE_3_C_A
call PAUSE_3_C_A
ld de,0Ah
ld hl,4000h
push hl
call sub_2D73
ld hl,4100h
ld de,0Bh
call sub_2D73
pop hl
push hl
ld de,8
call sub_2F1B
ld hl,40E3h
ld a,(hl)
ld (KSTATE0),a
inc hl
ld a,(hl)
inc (hl)
inc hl
ld e,(hl)
inc hl
ld d,(hl)
or a
ex de,hl
ld de,0C0h
sbc hl,de
ld (40E5h),hl
ld hl,4000h
ld de,8
call sub_2D73
pop hl
ld de,(40E1h)
push de
ld de,0Ah
call sub_2F1B
pop de
call sub_2D4C
push de
ld a,3Ch
IF EMU
RST30 _OUT_FF
ELSE
out (0FFh),a
ENDIF
call sub_2F65
ld hl,4000h
ld de,8
ld b,1
call sub_2F1B
pop de
ld hl,(40E1h)
ld (40E1h),de
push hl
ld hl,4000h
ld de,8
ld b,1
call sub_2D73
ld a,(40E4h)
dec a
call sub_2CE5
ld (hl),"@"
inc hl
ld b,7
loc_2B09 ld (hl)," "
inc hl
djnz loc_2B09
ld (hl),"C"
pop de
pop bc
inc hl
ld (hl),c
inc hl
ld (hl),b
inc hl
inc hl
inc hl
ld (hl),0C0h
inc hl
ld (hl),e
inc hl
ld (hl),d
ld hl,4000h
ld de,0
IF EMU
RST32 _IN_5F,__IN_A_N+0X5F<<8
ELSE
in a,(5Fh)
ENDIF
dec a
ld e,a
ld b,1
call sub_2D73
ld hl,0
add hl,sp
ld (4140h),hl
ld sp,41FFh
call sub_2A35
ld hl,0C000h
xor a
loc_2B3F add a,(hl)
inc hl
ld b,a
ld a,h
or a
ld a,b
jr nz,loc_2B3F
ld hl,4100h
ld (hl),a
push hl
ld hl,loc_2B58
push hl
ld hl,loc_3D2F
push hl
di
jp 4080h
loc_2B58 pop hl
ld bc,7FFDh
ld a,0AAh
ld (4130h),a
ld d,5
ld a,(KSTATE1)
or d
ld d,a
out (c),d
ld a,(0C130h)
cp 0AAh
jp nz,loc_2C1B
ld a,d
and 0F8h
ld d,a
inc hl
ld b,8
loc_2B79 ld (hl),d
out (c),d
xor a
ld hl,0C000h
loc_2B80 add a,(hl)
inc hl
ld e,a
ld a,h
or a
ld a,e
jr nz,loc_2B80
ld hl,4100h
cp (hl)
inc hl
jr z,loc_2B93
inc d
djnz loc_2B79
dec d
loc_2B93 ld b,8
loc_2B95 push bc
call sub_2C37
pop bc
djnz loc_2B95
ld c,0
call sub_2F3A
call sub_2D2A
ld a,(40E4h)
ld (4102h),a
inc a
ld (40E4h),a
ld hl,(40E5h)
ld de,1
sbc hl,de
ld (40E5h),hl
ret c
ld hl,(40E1h)
ld (411Eh),hl
call sub_2D1E
ld a,38h
ld (4111h),a
ld a,1
ld (411Dh),a
ld hl,4100h
ld (4119h),hl
ld hl,100h
ld (411Bh),hl
ld de,(40E1h)
call sub_2F65
ld c,d
call sub_2F3A
ld hl,4100h
ld b,1
call loc_2D58
ld (40E1h),de
ld c,0
call sub_2F3A
call sub_2D34
ld a,(4102h)
call sub_2CE5
ld de,4110h
ld bc,10h
ex de,hl
ldir
IF EMU
RST32 _IN_5F,__IN_A_N+0X5F<<8
ELSE
in a,(5Fh)
ENDIF
dec a
ld e,a
ld d,0
ld hl,4000h
call sub_2D73
ld bc,7FFDh
ld a,(4101h)
out (c),a
loc_2C1B ld hl,(4140h)
ld sp,hl
ld hl,4000h
ld de,0Ah
call sub_2F1B
ld hl,4100h
ld de,0Bh
call sub_2F1B
ld a,3Ch
push af
jp loc_2EBC
sub_2C37 ld a,b
dec a
ld (4103h),a
ld b,a
ld a,(4101h)
and 7
cp b
ret z
ld a,2
cp b
ret z
ld a,(4101h)
and 8
jr z,loc_2C55
ld a,b
cp 7
ret z
jr loc_2C59
loc_2C55 ld a,b
cp 5
ret z
loc_2C59 call sub_2C5D
ret
sub_2C5D ld hl,4101h
ld a,(hl)
and 0F8h
ld c,a
ld a,b
or c
push bc
ld bc,7FFDh
out (c),a
pop bc
ld hl,0C000h
loc_2C70 ld a,(hl)
or a
jr nz,loc_2C7A
inc hl
ld a,h
or a
jr nz,loc_2C70
ret
loc_2C7A call sub_2C7E
ret
sub_2C7E ld c,0
call sub_2F3A
call sub_2D2A
ld a,(40E4h)
ld (4102h),a
inc a
ld (40E4h),a
ld hl,(40E5h)
ld de,40h
sbc hl,de
ld (40E5h),hl
ret c
ld hl,(40E1h)
ld (411Eh),hl
call sub_2D1E
ld a,40h
ld (411Dh),a
ld hl,0C000h
ld (4119h),hl
ld hl,4000h
ld (411Bh),hl
ld de,(40E1h)
call sub_2D3E
ld (40E1h),de
ld c,0
call sub_2F3A
call sub_2D34
ld a,(4102h)
call sub_2CE5
ld de,4110h
ld bc,10h
ex de,hl
ldir
IF EMU
RST32 _IN_5F,__IN_A_N+0X5F<<8
ELSE
in a,(5Fh)
ENDIF
dec a
ld e,a
ld d,0
ld hl,4000h
call sub_2D73
ret
sub_2CE5 ld c,a
and 0F0h
rrca
rrca
rrca
rrca
ld b,a
push bc
ld e,b
ld d,0
ld hl,4000h
push de
call sub_2F1B
pop de
pop bc
ld b,0
ld a,c
and 0Fh
rlca
rlca
rlca
rlca
ld hl,4000h
add a,l
ld l,a
ret
sub_2D09 ld hl,4110h
ld b,9
loc_2D0E ld (hl)," "
inc hl
djnz loc_2D0E
ld a,"@"
ld (4110h),a
ld a,"C"
ld (4118h),a
ret
sub_2D1E call sub_2D09
ld a,(4103h)
add a,"0"
ld (4111h),a
ret
sub_2D2A ld hl,4000h
ld de,8
call sub_2F1B
ret
sub_2D34 ld hl,4000h
ld de,8
call sub_2D73
ret
sub_2D3E call sub_2F65
ld c,d
call sub_2F3A
ld hl,0C000h
ld b,40h
jr loc_2D58
sub_2D4C call sub_2F65
ld c,d
call sub_2F3A
ld hl,4000h
ld b,0C0h
loc_2D58 push bc
push de
call sub_2D73
ld de,100h
add hl,de
pop de
inc e
ld a,e
cp 10h
jr nz,loc_2D6F
ld e,0
inc d
ld c,d
call sub_2F3A
loc_2D6F pop bc
djnz loc_2D58
ret
sub_2D73 ld a,e
inc a
IF EMU
RST32 _OUT_5F,__OUT_N_A+0X5F<<8
ELSE
out (5Fh),a
ENDIF
push hl
ld d,14h
push de
loc_2D7B di
ld c,7Fh
ld a,0A0h
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (1Fh),a
ENDIF
call WR_DATAPORT
pop de
pop hl
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 0x7f
ret z
dec d
push hl
push de
jr nz,loc_2D7B
halt
loc_2D92 ld hl,(TRD_5CE6) ; <C>-
, <B>-
ld de,(TRD_5CEB) ;
ld a,(TRD_5CEA) ;
ld b,a
call COM_05 ;
ret
GOTO call SET_AND_PUT
call EXIT_IF_SINTAX ;
,
call INP_EXTFILENAME ;
call SET_FILENAME ;
#5CDD
ld (4020h),bc
ld a,c
cp 8
jr nc,loc_2DD2
call COM_18 ;
call FIND_FILENAME ;
jp nz,ERR_NOFILES
ld hl,TRD_5CDD ;
ld bc,(4020h)
add hl,bc
ld (hl),"8"
push hl
call FIND_FILENAME ;
pop hl
jr z,loc_2DD8
ld (hl)," "
loc_2DD2 call FIND_FILENAME ;
jp loc_2E33
loc_2DD8 call RDHEAD_FILENAME ;
call loc_2D92
ld sp,40FFh
ld b,8
loc_2DE3 push bc
ld a,b
ld bc,7FFDh
dec a
push af
or 10h
out (c),a
pop af
add a,"0"
ld hl,TRD_5CDD ;
ld bc,(4020h)
add hl,bc
ld (hl),a
call FIND_FILENAME ;
jr nz,loc_2E05
call RDHEAD_FILENAME ;
call loc_2D92
loc_2E05 pop bc
djnz loc_2DE3
ld a," "
ld hl,TRD_5CDD ;
ld bc,(4020h)
add hl,bc
ld (hl),a
call FIND_FILENAME ;
call RDHEAD_FILENAME ;
push bc
push af
ld bc,7FFDh
ld a,(4101h)
out (c),a
pop af
pop bc
jr loc_2E39
call SET_AND_PUT
call EXIT_IF_SINTAX ;
,
call INP_EXTFILENAME ;
call FIND_FILE ;
loc_2E33 jp nz,ERR_NOFILES
call RDHEAD_FILENAME ;
loc_2E39 ld a,(TRD_5CDD) ;
cp "$"
di
jr nz,loc_2E43
im 2
loc_2E43 ld sp,40F0h
call GET_TYPE_DISK ;
ld (4010h),a
ld a,(TRD_5D16) ;
( #FF)
ld (4011h),a
ld hl,(TRD_5CE6) ; <C>-
, <B>-
push hl
ld de,(TRD_5CEB) ;
push de
inc e
ld a,e
cp 10h
jr nz,loc_2E64
ld e,0
inc d
loc_2E64 ld c,d
call sub_2F07
ld a,(4010h)
and 2
call nz,sub_2F0F
ld a,c
call loc_2F50
ld hl,4100h
ld b,0BFh
loc_2E79 push bc
push de
call sub_2F1B
ld de,100h
add hl,de
pop de
inc e
ld a,e
cp 10h
jr nz,loc_2E9C
ld e,0
inc d
ld c,d
call sub_2F07
ld a,(4010h)
and 2
call nz,sub_2F0F
ld a,c
call loc_2F50
loc_2E9C pop bc
djnz loc_2E79
pop de
pop hl
ld sp,hl
ld a,(4011h)
push af
ld c,d
call sub_2F07
ld a,(4010h)
and 2
call nz,sub_2F0F
ld a,c
call loc_2F50
ld hl,4000h
call sub_2F1B
loc_2EBC pop af
ex af,af'
pop af
ld r,a
pop af
ld i,a
di
ld a,0FFh
jp po,loc_2ECC
ld a,0
loc_2ECC ld (KSTATE0),a
pop af
pop hl
pop de
pop bc
exx
ex af,af'
pop iy
pop ix
pop hl
pop de
pop bc
ld a,(BORDCR)
and 38h
rrca
rrca
rrca
out (0FEh),a
ld a,(SWAP_8)
cp 0EEh
jr nz,loc_2EF7
push bc
ld bc,7FFDh
ld a,(BANKM)
out (c),a
pop bc
loc_2EF7 ld a,(KSTATE0)
or a
ld a,0C9h
ld (KSTATE0),a
jr nz,loc_2F03
ei
loc_2F03 pop af
jp KSTATE0
sub_2F07 ld a,(4011h)
or 0x3c
loc_2F0C
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
ret
sub_2F0F ld a,c
or a
rra
ld c,a
ret nc
ld a,(4011h)
and 0x6f ;LORD OF CHAOS
jr loc_2F0C
sub_2F1B ld a,e ;EXOLON
inc a
IF EMU
RST32 _OUT_5F,__OUT_N_A+0X5F<<8
ELSE
out (0x5f),a
ENDIF
push hl
ld d,0x14
push de
loc_2F23 di
ld c,0x7f
ld a,0x80
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
call RD_DATAPORT
pop de
pop hl
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 0x7f
ret z
dec d
push hl
push de
jr nz,loc_2F23
halt
sub_2F3A ld a,3Ch
IF EMU
RST30 _OUT_FF
ELSE
out (0FFh),a
ENDIF
ld a,(KSTATE0)
and 8
jr nz,loc_2F4F
ld a,c
or a
rra
ld c,a
jr nc,loc_2F4F
ld a,2Ch
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
loc_2F4F ld a,c
loc_2F50
IF EMU
RST32 _OUT_7F,__OUT_N_A+0X7F<<8
ELSE
out (0x7f),a
ENDIF
call loc_3D2F;PAUSE725779T
ld a,0x18
loc_2F57
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
loc_2F59
IF EMU
RST32 _IN_FF,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0x80
jr z,loc_2F59
push bc
call PAUSE725779T
pop bc
ret
sub_2F65 ld a,0x08 ;SOLDIER OF THE FUTURE
jr loc_2F57
WORK4ERROR ld hl,(TRD_5D1C) ;
SP
dec hl
dec hl
ld sp,hl
jp loc_1D2F
CALL2BASIC ld (TRD_5D02),hl
ld (TRD_5D04),de
pop hl
ld e,(hl)
inc hl
ld d,(hl)
inc hl
push hl
ld hl,loc_3D2F
push hl
push de
ld hl,TRD_5CC2
push hl
ld hl,(TRD_5D02)
ld de,(TRD_5D04)
ret
SET_VARS LD HL,0X0808
ld (TRD_5CFA),hl ;
A
ld (TRD_5CFC),hl ;
C
LD HL,0X8383
ld (TRD_5CC8),hl ;
A
ld (TRD_5CCA),hl ;
C
xor a
ld (TRD_5D17),a ;
,
#AA
ld (TRD_5D18),a
ld (TRD_5D0F),a ;
TR-DOS
ld (TRD_5D1F),a
CALL SET_DRIVENAME
ld a,0xff
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
ld (ERR_NR),a
ld (TRD_5D0C),a
ld a,0xc9
ld (TRD_5CC2),a
ld a,0xd0
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
ret
CP_END_CAT call CP_END_BUF
ld a,(hl)
or a
jp z,END_OUT_DIR
cp 1
call z,ADD_10
ret nz
jr CP_END_CAT
LOAD_SEC2BUF ld b,1
ld hl,TRD_5D25
jp loc_1E67
LOAD_END_FILE push hl
ld de,(TRD_5CF4)
call LOAD_SEC2BUF
ld a,(TRD_5CDB)
pop de
or a
ret z
ld c,a
ld hl,TRD_5D25
IF EMU
IF EMU3D2F=1
JP EMU_LDIR
ELSE
ldir
ret
ENDIF
ELSE
ldir
ret
ENDIF
;
TR-DOS
CODE_BYTE_COM db __CAT
db "*"
db __FORMAT
db __MOVE
db __NEW
db __ERASE
db __LOAD
db __SAVE
db __RETURN
db __PEEK
db __POKE
db __MERGE
db __RUN
db __OPEN
db __CLOSE
db __COPY
db "4"
db __GOTO
db "8"
db __LIST
db __VERIFY
ECODE_BYTE_COM
;
SPIS_ADR_COM dw CAT
dw COM_STAR
dw FORMAT
dw MOVE
dw NEW ;
NEW
dw ERASE ;
ERASE
dw LOAD
dw SAVE
dw RETURN
dw PEEK
dw POKE
dw MERGE
dw RUN
dw OPEN
dw CLOSE
dw COPY
dw COM_40
dw GOTO
dw COM_80
dw LIST
dw VERIFY
SAE2E_LINE ld hl,(E_LINE) ;
ld (TRD_5D11),hl ;
TR_DOS
ld (TRD_5CD9),hl ;
<B> <C>
ld a,0xff
ld (TRD_5CD6),a ; #FF-
ld hl,TRD_5CDB
ld (TRD_5CD7),hl ;
-
;
jr loc_3057
SAE2_HL_ ld (TRD_5D11),hl ;
TR_DOS
ld (TRD_5CD9),hl ;
<B> <C>
call CP_ADR_STR
ret nz
inc hl
inc hl
ld (TRD_5CD7),hl ;
-
;
loc_3057 call CMP_SPECSYM
jr nz,loc_3087
ex de,hl
inc de
ld b,0
ld hl,BYTES_COM
add hl,bc
ld a,(hl)
ld hl,(TRD_5CD9) ;
<B> <C>
ld (hl),a
inc hl
ex de,hl
rst 0x20
dw 0x19dd
push bc
;[???]
; call CLRBUF_EDITOR1
rst 20h
dw 19E8h
pop bc
ld a,(TRD_5CD6) ; #FF-
or a
jr nz,loc_3087
ld hl,(TRD_5CD7) ;
-
;
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl
or a
sbc hl,bc
ex de,hl
ld (hl),d
dec hl
ld (hl),e
loc_3087 ld hl,(TRD_5CD9) ;
<B> <C>
ld a,(hl)
cp 0x0d
ret z
inc hl
ld (TRD_5CD9),hl ;
<B> <C>
ld a,(hl)
cp 0x0d
ret z
cp 0x22
jr nz,loc_3057
loc_309A inc hl
ld a,(hl)
cp 0x0d
ret z
cp 0x22
jr nz,loc_309A
inc hl
ld (TRD_5CD9),hl ;
<B> <C>
jr loc_3057
FIND_KEYWORD ld hl,(TRD_5CD9) ;
<B> <C>
ld de,TBL_KEYWORD ; "SAVE"
ld c,0
loc_30B1 ld a,(hl)
and 0xdf
ld b,a
or a
jr nz,loc_30BB
inc hl
jr loc_30B1
loc_30BB ld a,(de)
and 0x80
jr nz,loc_30C8
ld a,(de)
cp b
jr nz,loc_30D9
inc hl
inc de
jr loc_30B1
loc_30C8 ld a,(de)
and 0x7f
cp b
ret z
loc_30CD inc c
ld hl,(TRD_5CD9) ;
<B> <C>
inc de
ld a,(de)
cp 0xff
jr nz,loc_30B1
or a
ret
loc_30D9 inc de
ld a,(de)
and 0x80
jr z,loc_30D9
jr loc_30CD
CP_ADR_STR ld hl,(PPC)
inc hl
inc hl
ld a,h
or l
jr z,loc_30F4
xor a
ld (TRD_5CD6),A ; #FF-
dec hl
dec hl
rst 0x20
dw 0x196e
ret
loc_30F4 ld a,0xff
ld (TRD_5CD6),a ; #FF-
ld hl,(E_LINE) ;
ret
;
TBL_KEYWORD db "SAVE",0x80
DC "SAVE"
db "LOAD",0x80
DC "LOAD"
db "RUN",0x80
DC "RUN"
db "CAT",0x80
DC "CAT"
db "ERASE",0x80
DC "ERASE"
db "NEW",0x80
DC "NEW"
db "MOVE",0x80
DC "MOVE"
db "MERGE",0x80
DC "MERGE"
db "PEEK",0x80
DC "PEEK"
db "POKE",0x80
DC "POKE"
db "OPEN",0x83
db "CLOSE",0x83
db "CODE",0x80
DC "CODE"
db "RND",0x80
DC "RND"
db "DATA",0x80
DC "DATA"
db "SCREEN",4,0x84
db "SCREEN",0x84
db "COPY",0x80
DC "COPY"
db "FORMAT",0x80
DC "FORMAT"
db "GOTO",0x80
DC "GOTO"
db "LIST",0x80
DC "LIST"
db "LINE",0x80
DC "LINE"
db "VERIFY",0x80
DC "VERIFY"
db 0xff,0xff
;
BYTES_COM dw __SAVE<<8+__SAVE
dw __LOAD<<8+__LOAD
dw __RUN<<8+__RUN
dw __CAT<<8+__CAT
dw __ERASE<<8+__ERASE
dw __NEW<<8+__NEW
dw __MOVE<<8+__MOVE
dw __MERGE<<8+__MERGE
dw __PEEK<<8+__PEEK
dw __POKE<<8+__POKE
dw __CLOSE<<8+__OPEN
dw __CODE<<8+__CODE
dw __RND<<8+__RND
dw __DATA<<8+__DATA
dw __SCREENS<<8+__SCREENS
dw __COPY<<8+__COPY
dw __FORMAT<<8+__FORMAT
dw __GOTO<<8+__GOTO
dw __LIST<<8+__LIST
dw __LINE<<8+__LINE
dw __VERIFY<<8+__VERIFY
db 0
CP_VARSTRDOS CALL CMP_VARSTRDOS
or a
ld bc,TRD_5D25
sbc hl,bc
ret
;===============FREE SPACE 2============
include extend.a80
include raznoe.a80
include patch.a80
;
HONEY COMANDER
include hc_resident.a80
;===============FREE SPACE 2============
TITLE "evo-dos.a80"
DUPL 0X3C01-$,0XFF
jr loc_3C06
db 0xff
jr loc_3C09
loc_3C06 jp loc_3D00
loc_3C09 jp loc_3D03
;===============FREE SPACE 3============
DUPL 0X3C30-$,0XFF
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
IN A,(0X1F)
ENDIF
RET
;
HONEY COMANDER
DUPL 0X3C50-$,0XFF
LOC_3C50 LD H,CMOS_BYTE_01
CALL READCMOS
AND M_REZIDENT
JP Z,LOC_3C4B
JP loc_3C50
IF EMU
DUPL ADR_RST8END-$,0XFF
JP EDOS2RST8
ENDIF
;===============FREE SPACE 3============
DUPL 0X3CFA-$,0XFF
loc_3CFA nop
jr loc_3D2F
loc_3CFD jp CALL_3D13
; DOS (15616)
loc_3D00 nop
jr IN_DOS_15616
;
(15619)
loc_3D03 nop
jr IN_DOS_15619
loc_3D06 nop
jp INPUTDATAFILE
loc_3D0A jp OUT_SYM2FILE
nop
loc_3D0E jr loc_3D0A
nop
jr loc_3CFA
nop
jr loc_3CFD
loc_3D16 nop
jp WORK4ERROR
IN_DOS_15619 call CREATE_VARS_TRD
push hl
jp CONTINUE_15619
CREATE_VARS_TRD call CP_VARSTRDOS
nop
nop
call c,JMP_CREATE_VARS
ld hl,TRD_5CC2
ret
nop
nop
loc_3D2F nop
ret
IN_DOS_15616 call CREATE_VARS_TRD
push hl
jp IN_COMMAND_CPU ;
INI_INTERFACE1 xor a
DUPL 2,0
in a,(0xf7)
cp 0x1e
jr z,loc_3D44
cp 0x1f
ret nz
loc_3D44 rst 8
db 0x31
ld a,1
ld (TRD_5CEF),a
ret
JMP_CREATE_VARS xor a
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
in a,(0xf6)
ld hl,INI_INTERFACE1
ld de,MEMBOT
ld bc,0x14
ldir ;ADS
ld hl,CREATE_VARS
push hl
LD hl,loc_3D2F
push hl
jp MEMBOT
CREATE_VARS
IF EMU
CALL CMP_RAMDISK
ELSE
ld hl,SET_VARS
ENDIF
push hl
ld hl,loc_3D2F
push hl
ld hl,0x1655
push hl
ld hl,TSTACK_END
push hl
ld (hl),0xc9
ld hl,P_RAMT+1
ld bc,0x70
ret
PRINT_0D ld a,0x0d
PRINT_A_ push hl
push bc
push de
push af
DUPL 3,0
pop af
call PRINT_SYM
DUPL 3,0
pop de
pop bc
pop hl
ret
PRINT_SYM rst 0x20
dw 0x10
ret
;
93
COM_00 ld a,0x08
COM2VG_WAIT
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
loc_3D9C push hl
rst 0x20
dw 0x1f54
jr c,loc_3DA5
rst 0x20
dw 0x1b7b
loc_3DA5 pop hl
IF EMU
RST32 _IN_FF,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0x80
jr z,loc_3D9C
ret
CP_PRESENT_DSK ld a,0x08
call COM2VG_WAIT
ld de,0
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 2
ld b,a
loc_3DBA
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 2
cp b
IF EMU
IF EMU3D2F=1
RET
ELSE
ret nz
ENDIF
ELSE
ret nz
ENDIF
inc de
ld a,e
or d
jr nz,loc_3DBA
jp loc_3EE7
;
ACTIV_DEF_DSK ld a,(TRD_5D19) ;
;
COM_01 ld (TRD_5CF6),a ;
ld hl,TRD_5D16 ;
( #FF)
or 0x3c
ld (hl),a
IF EMU
RST30 _OUT_FF
ELSE
out (0xff),a
ENDIF
LD B,0
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
IF EMU
RST32 _OUT_7F,__OUT_N_A+0X7F<<8
ELSE
out (0x7f),a
ENDIF
LD A,%00011000 ;
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
DJNZ $ ;
COM_011
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
AND 0X80
JP NZ,loc_3EE7
LOC_3DFA JP WR_NUM_TRACK
WR_BYTE_RET OUT (C),A
RET
DUPL 0X3DFD-$,0XFF
PAUSE725779T ld a,0x50
PAUSE_C_A ld c,0xff
loc_3E01 dec c
jr nz,loc_3E01
dec a
jr nz,PAUSE_C_A
ret
;
GET_TIME_HEAD ld de,TRD_5CFA ;
A
loc_3E0B ld hl,(TRD_5CF6) ;
add hl,de
ld a,(hl)
ret
GET_TYPE_DISK ld de,TRD_5CC8 ;
A
jr loc_3E0B
;
CP_TIME_GOHEAD call GET_TIME_HEAD ;
ld b,8
ld c,4
loc_3E1D ld (hl),b
ld a,0Bh
call COM2VG_WAIT
ld a,20h
ld b,0Bh
call HEAD_POSITION
ld b,(hl)
ld a,1
call HEAD_POSITION
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(1Fh)
ENDIF
and 4
jr nz,loc_3E3F
xor a
call HEAD_POSITION
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(1Fh)
ENDIF
and 4
ret nz
loc_3E3F inc b
dec c
ret z
jr loc_3E1D
HEAD_POSITION
IF EMU
RST32 _OUT_7F,__OUT_N_A+0X7F<<8
ELSE
out (0x7f),a
ENDIF
ld a,b
or 0x18
jp COM2VG_WAIT
POSITIONIREN
IF EMU
RST32 _OUT_7F,__OUT_N_A+0X7F<<8
ELSE
out (0x7f),a
ENDIF
push bc
ld b,a
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
cp b
pop bc
push af
ld a,b
or 0x18
call COM2VG_WAIT
pop af
ret z
push bc
call PAUSE725779T
pop bc
ret
;
COM_02 ld c,a
call COM_16
call GET_TYPE_DISK
and 2
call nz,SET_SIDE_DSK
push bc
bit 7,(hl)
jr z,loc_3E83
bit 0,(hl)
jr nz,loc_3E83
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
cp c
jr z,loc_3E82
rlca
IF EMU
RST32 _OUT_3F,__OUT_N_A+0X3F<<8
ELSE
out (0x3f),a
ENDIF
ld a,c
rlca
loc_3E82 ld c,a
loc_3E83 call GET_TIME_HEAD ;
ld b,a
ld a,c
call POSITIONIREN
pop bc
ld a,c
IF EMU
RST32 _OUT_3F,__OUT_N_A+0X3F<<8
ELSE
out (0x3f),a
ENDIF
ld a,(TRD_5CCD) ; #80-
or a
ret z
xor a
ld (TRD_5CCD),a ; #80-
ret
DUPL 0X3EA0-$,0XFF
PAUSE_3_C_A ld b,3
loc_3EA2 ld a,0xff
call PAUSE_C_A
djnz loc_3EA2
ret
SET_SIDE_DSK ld a,c
or a
rra
ld c,a
ret nc
jp COM_17
GET_NUM_TRACK call COM_16
loc_3EB5
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
and 0x80
ld (TRD_5CCD),a ; #80-
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
ld h,a
call BUGFIX_3EBF ;PATCH ERROR
ld c,0x7f
ld d,1
di
ld a,0xc0
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
push bc
ld b,3
loc_3ECE
IF EMU
RST32 _IN_FF,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr nz,loc_3EF2
inc de
ld a,e
or d
jr nz,loc_3ECE
djnz loc_3ECE
pop bc
ei
ld a,0xd0
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
ld a,(TRD_5D17)
cp 0xff
ret z
loc_3EE7 call SET_TAPELDERR
ld a,0xff
ld (TRD_5D17),a ;
,
#AA
jp loc_271B
loc_3EF2 pop bc
IF EMU
RST32 _IN_H_C,__IN_H_C
ELSE
in h,(c)
ENDIF
loc_3EF5
IF EMU
RST32 _IN_FF,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr z,loc_3EF5
ei
ret m
di
in a,(0x7f)
jr loc_3EF5
;
COM_03 ld (TRD_5CFF),a
ret
;
COM_04 ld (TRD_5D00),hl
ret
SAVE_SECTOR ld a,0xa0
jr loc_3F10
LOAD_SECTOR ld a,0x80
loc_3F10 ld (TRD_5CFE),a
loc_3F13 ld d,0x0a
loc_3F15 push de
di
ld a,(TRD_5CFF)
inc a
IF EMU
RST32 _OUT_5F,__OUT_N_A+0X5F<<8
ELSE
out (0x5f),a
ENDIF
ld hl,(TRD_5D00)
ld c,0x7f
ld a,(TRD_5CFE)
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
cp 0xa0
push af
call z,WRITE_SEC
pop af
call nz,READ_SEC
pop de
ei
IF EMU
RST32 _IN_1F,__IN_A_N+0X1F<<8
ELSE
in a,(0x1f)
ENDIF
ld b,a
and 0x7f
ret z
loc_3F39 ld hl,READ_ONLY ; READ ONLY
and 0x40
jr nz,loc_3F4B
ld a,b
and 4
jr z,loc_3FA0
dec d
jr nz,loc_3F15
loc_3F48 ld hl,TXT_DISCERROR_ ; DISC ERROR
loc_3F4B ld a,0xd0
IF EMU
RST32 _OUT_1F,__OUT_N_A+0X1F<<8
ELSE
out (0x1f),a
ENDIF
ld a,b
and 1
jp nz,loc_3EE7
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
or a
jr nz,loc_3F5F
IF EMU
RST32 _IN_5F,__IN_A_N+0X5F<<8
ELSE
in a,(0x5f)
ENDIF
cp 0x0a
ret z
loc_3F5F push hl
call CLEAR_SCREEN ;
pop hl
rst 0x18
ld hl,TXT_TRK_ ; TRACK
rst 0x18
IF EMU
RST32 _IN_3F,__IN_A_N+0X3F<<8
ELSE
in a,(0x3f)
ENDIF
call PRINT_CHISLO_A_
ld hl,TXT_SEC_ ; SECTOR
rst 0x18
IF EMU
RST32 _IN_5F,__IN_A_N+0X5F<<8
ELSE
in a,(0x5f)
ENDIF
call PRINT_CHISLO_A_
ld hl,TXT_RIA_
rst 0x18
loc_3F7B call GET_KEYS ;
cp "I" ; IGNORE-RET
#1E8E
ret z
cp "R" ; RETRY
jr z,PRESS_RETRY
cp "A" ; ABORT
jr nz,loc_3F7B
call SET_TAPELDERR ; PRESS ABORT
ld a,7
ld (TRD_5D0F),a ;
TR-DOS
jp END_COMAND
PRESS_RETRY ld a,(TRD_5CF5)
call COM_02
call PAUSE_3_C_A
jp loc_3F13
loc_3FA0 dec d
jp z,loc_3F48 ; DISC ERROR
push de
call GET_TIME_HEAD ;
and 2
jr nz,loc_3FAD
inc (hl)
loc_3FAD call COM_00
ld a,(TRD_5CF5)
call COM_02
pop de
jp loc_3F15
WRITE_SEC ld b,4
loc_3FBC
IF EMU
RST32 WWRITE_SEC_,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr nz,loc_3FD1
inc de
ld a,e
or d
jr nz,loc_3FBC
djnz loc_3FBC
ret
WR_DATAPORT
IF EMU
RST32 WWRITE_SEC_,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr z,WR_DATAPORT
ret m
loc_3FD1
IF EMU
RST32 WWRITE_SEC_,__OUTI
ELSE
outi
ENDIF
jr WR_DATAPORT
READ_SEC ld b,4
loc_3FD7
IF EMU
RST32 WREAD_SEC_,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr nz,loc_3FEC
inc de
ld a,e
or d
jr nz,loc_3FD7
djnz loc_3FD7
ret
RD_DATAPORT
IF EMU
RST32 WREAD_SEC_,__IN_A_N+0XFF<<8
ELSE
in a,(0xff)
ENDIF
and 0xc0
jr z,RD_DATAPORT
ret m
loc_3FEC
IF EMU
RST32 WINI_RET,__INI
ELSE
ini
ENDIF
jr RD_DATAPORT
OUT (C),A
FOR_RET RET
IN A,(C)
RET
DUPL 0X3FF8-$,0XFF
DB "EVODOS"
DW DATA_VERS