Take out and put
(C) 2000 Jerri / AF
Howdy Peoples!
And another buggy product from Jerri. On
This time it's called "Extractor". AND
it is intended for Normal
Spektrumskih prog from the buggy PTsshnyh files.
But the main thing is that the converters
of different formats are defined as an overlay.
So do not have to drive a lot
prog type "UNz80", "UNslt" or "UNtap",
enough to have a shell, and you need
overlays.
So, after running the program spends
memory test and starts searching the disc in
search files with the extension "ovl".
If there are to found, then it will require
insert the disk with overlays.
Management shell
"OPQA", "6789" and the arrow keys.
"Enter" to incite one of overlays on
the current file
"G" to run the current file
"R" read the disc
The remaining buttons are marked with capital
letters.
The shell maintains a file of length
more than 255 sectors, if they slashed
to expand.
For example: Supaplex tzx
Supaplex 0zx
Supaplex 1zx
How to write an overlay?
Start address overlay # 8000 = 32768
Maximum length
Overlay # 1000 = 4096
After selecting a file the shell moves
overlay to address # 8000 and passes it
the following data:
(DEBC) - total length of the file in bytes
HL - a pointer to the address of the procedure
+0 Close_File close the file
+2 Create_File create a file
file header
(14 bytes) Adre
agrees Reg. HL.
+4 Byte_to_buffer transfer to create
this file
byte of reg. A
+6 Get_byte take reg. A
bytes from the stream
Data
IX - the source file name
(May need to record retrieved from the 'sna' file)
When you return if the flag 'Carry' is set, then the file was
a mistake.
For example, the source 'scl'a.
ORG # 6C76
DISP # 8000
; ONSTART
; HL INDEX
; +0 CLOFIL
; +2 CREFIL
; +4 STOBYT
; +6 GETBYT
; DEBC FILELENGHT
; BEGINNING
BEGIN
JP START
;
GETBYT JP $
;
STOBYT JP $
;
CREFIL JP $
; HL FILEHEADER
; FILENAME_E_AD (XE) _LN_S
CLOFIL JP $
FILEHEA DEFB "FILENAME"
DEFB "EADLNS"
HIGLEN DEFW 0
LOWLEN DEFW 0
START
LD A, B
OR C
OR E
OR D
SCF
RET Z
PUSH BC
PUSH DE
LD B, 4
LD E, (HL)
INC HL
LD D, (HL)
INC HL
PUSH DE
DJNZ $ -5
POP HL
LD (GETBYT +1), HL
POP HL
LD (STOBYT +1), HL
POP HL
LD (CREFIL +1), HL
POP HL
LD (CLOFIL +1), HL
POP HL
LD (HIGLEN), HL
POP HL
LD (LOWLEN), HL
LD B, 8
LD HL, DAT; skript'SINCLAIR '
CALL GETBYT
CP (HL)
SCF; error if
LD A, 1, the script does not
, Coincides
RET NZ; with title
; File
INC HL
DJNZ $ -9
CALL GETBYT; take
, The number of
; Files
LD B, A
PUSH BC
LD HL, ENDPROG
LD (TECCAT), HL
MAIN0 PUSH BC
LD B, 14
MAIN00
CALL GETBYT
LD (HL), A
INC HL
DJNZ MAIN00
POP BC
DJNZ MAIN0
POP BC
MAIN1 PUSH BC
LD BC, 13
LD HL, (TECCAT)
LD DE, FILEHEA
PUSH DE
LDIR
LD A, (HL)
LDI
LD (TECCAT), HL
POP HL
PUSH AF
CALL CREFIL; create a file
POP AF
LD B, A
LD C, 0
MAIN2 PUSH BC
MAIN3
CALL GETBYT
CALL STOBYT; complete file
DEC C
JR NZ, MAIN3
POP BC
DJNZ MAIN2
CALL CLOFIL; close the file
POP BC
DJNZ MAIN1
OR A; no errors
RET
DAT DEFB "SINCLAIR"
TECCAT DEFW 0
ENDPROG
LENG EQU ENDPROG-BEGIN
SAVE "scl" CODE BEGIN, LENG
Well, maybe that's all.
If you notice bugs, please write.