┌──────────────────────── ─────────────────── ───────────────────┐
│ ** LIKBEZ ** │
└─────────────────────────────── ───────────────────────────────┘
(c) P. Fedin
FULL DESCRIPTION + FULL ROM DISASSEMBLER TR-DOS 5.04T (5.03)
FOR PROFESSIONALS, AND ALSO FOR THOSE WHO WANT TO BECOME THEM
continued
Address 6657. Preparing to download the program in BASIC.
6657 LD DE,(23635);take the address of the beginning of the program in BASIC
LD HL,(23641); take the address of the end of the program in BASIC
DEC HL
PUSH HL ;save the beginning and end of the program
PUSH DE
SBC HL,DE ;calculating program length in BASIC
LD DE,(23782);take the length of the program with variables
PUSH DE ;save it
PUSH HL ;save the length of the old program
LD HL,0 ;verification in progress?
LD A,(23801)
CP 255
JR Z,6688; if yes, then we do not change the length
LD HL,5 ;otherwise we will increase it by 5 bytes
6688 ADD HL,DE
LD (23771),HL;setting loading length
POP HL ;restoring the length of the oldprograms
LD A,(23801) ;verification ?
CP 255
JR NZ,6705; if not, then prepare the memory
POP DE ;pop registers from stack
POP DE
POP HL
JR 6728 ;return
6705 CALL 6642 ;checking availability of space for the program
POP BC ;restoring program length with variables
POP DE ;restore the beginning of the program
POP HL ;restore end of program
PUSH BC ;save program length
RST 32 ;erasing old program
DEFW #19E5
POP BC ;restore program length
CALL 7730 ;reserving space for a new program
INC HL ;setting the VARS variable
LD BC,(23784)
ADD HL,BC
LD (23627),HL
6728 LD HL,(23635); take the program download address
RET ;return
───────────────────────── ─────────────────── ────────────────────
Address 6732.Preparing memory for loading the array. Install
23784, 23767, 23769 and 23801.
6732 LD DE,(23784);download entire file
LD (23771),DE
LD HL,(23767);take the address of the array in memory
LD A,(23801) ;verification ?
CP 255
RET Z ;if yes, then return
LD HL,(23769); take the file download address
PUSH HL ;savehim
6753 CALL 6642 ;checking whether there is space for the array
POP HL ;restore file download address
LD A,H ;is it equal to 0?
OR L
JR Z,6777 ;if yes, then we do not remove the old array
LD HL,(23767);take the beginning of the old array
DEC HL
DEC HL
DEC HL
LD BC,(23769);take its length
INC B.C.
INC B.C.
INC B.C.
CALL 7726 ;erasing old array
6777 LD HL,(23641);take the beginning of the domain of variables
DEC HL
LD BC,(23784);take the file length
PUSH BC ;save it
INC B.C.
INC B.C.
INC B.C.
CALL 7730 ;reserving space for new array
INC HL ;set array name
LD A,(23762)
LD(HL),A
INC HL ;restore and set array length
POP DE
LD(HL),E
INC HL
LD(HL),D
INC HL ;take the address of the array body
RET ;return
to be continued...
Share your thoughts about the article