(C) Ivan Roshchin, Moscow, 1997.
Music by Ironman
Joint use
ZX ASM 3.0 and STS 5.1.
Surely known to every programmer
Monitor - debugger STS. Especially convenient
use this monitor with the assembler: typing program
assembliruesh it, and then using the STS check her work.
Starting with version 4.1, this monitor will truly priceless
opportunity to interactive debugging program output labels on
their corresponding addresses. The problem is that not everyone
can use it. Indeed, in the version 4.1 process output labels
designed only assembler "MASM 1.1" and with any other assembler
will not work. Similarly, the following version support
only assembler "ALASM". But what about
users of other assemblers? Will try to solve this problem for
users of "ZX ASM 3.0".
WARNING! All the reasons mentioned below
only applies to STS 5.1!
To convert the STS 5.1 to
the following:
1) Make sure that the disk contains
files "STS5.1" (this file may also be called "STS5.1AL",
"STS5.1XX", etc.) "Sts5.1a", "sts5.1b".
2) Run the file
"STS5.1".
3) Press the "U". Address at the top
the screen should be equal to # FE2A.
4) On the address # FE30 enter the program:
# FE30: PUSH HL
PUSH DE
PUSH BC
LD HL, # FE46
LD DE, # 57E0
LD BC, # 001C
LDIR
POP BC
POP DE
POP HL
AND # 18
OR # 06
RET
CALL # 57EF
EX DE, HL
LD BC, # FFF9
ADD HL, BC
LD A, (HL)
INC HL
OR (HL)
INC HL
INC HL
LD A, H
RET
DEC DE
DEC DE
DEC DE
LD A, (DE)
RLCA
JR C, # FE5F
AND A
JR NZ, # FE57
INC DE
XOR A
RET
To control the contents of the quote
this memory area:
# FE30: # E5, # D5, # C5, # 21, # 46, # FE, # 11, # E0
# FE38: # 57, # 01, # 1C, # 00, # ED, # B0, # C1, # D1
# FE40: # E1, # E6, # 18, # F6, # 06, # C9, # CD, # EF
# FE48: # 57, # EB, # 01, # F9, # FF, # 09, # 7E, # 23
# FE50: # B6, # 23, # 23, # 7C, # C9, # 1B, # 1B, # 1B
# FE58: # 1A, # 07, # 38, # 03, # A7, # 20, # F8, # 13
# FE60: # AF, # C9
5) The address # FE71 enter the program:
# FE71: PUSH HL
PUSH BC
LD (# FECC), BC
LD HL, # FEC4
CALL # E354
LD HL, # FFFC
EXX
PUSH DE
LD HL, (# E33B)
LD A, L
CALL # FE30
LD L, A
LD BC, # 7FFD
CALL # E33D
EX AF, AF '
CALL # E348
POP DE
EXX
POP BC
POP HL
EX AF, AF '
JR NZ, # FE6E
LD A, (# FADD)
AND A
CALL Z, # FB1C
LD B, # 0A
LD A, (# E33B)
LD C, A
AND # 18
OR # 06
LD (# E33B), A
CALL # E590
NOP
AND # 7F
CP # 21
JR C, # FEBF
CALL # FB49
DJNZ # FEAF
NOP
LD A, C
LD (# E33B), A
RET
OUT (C), L
EXX
LD C, (HL)
INC HL
LD B, (HL)
EX DE, HL
LD HL, # 8015
AND A
SBC HL, BC
CALL Z, # 57EF
JR Z, # FEE0
CALL # 57E0
JR Z, # FEDF
CP # BF
JR NZ, # FEC7
AND A
EXX
OUT (C), H
RET
To control the content of this quote
memory areas:
# FE71: # E5, # C5, # ED, # 43, # CC, # FE, # 21, # C4
# FE79: # FE, # CD, # 54, # E3, # 21, # FC, # FF, # D9
# FE81: # D5, # 2A, # 3B, # E3, # 7D, # CD, # 30, # FE
# FE89: # 6F, # 01, # FD, # 7F, # CD, # 3D, # E3, # 08
# FE91: # CD, # 48, # E3, # D1, # D9, # C1, # E1, # 08
# FE99: # 20, # D3, # 3A, # DD, # FA, # A7, # CC, # 1C
# FEA1: # FB, # 06, # 0A, # 3A, # 3B, # E3, # 4F, # E6
# FEA9: # 18, # F6, # 06, # 32, # 3B, # E3, # CD, # 90
# FEB1: # E5, # 00, # E6, # 7F, # FE, # 21, # 38, # 06
# FEB9: # CD, # 49, # FB, # 10, # F1, # 00, # 79, # 32
# FEC1: # 3B, # E3, # C9, # ED, # 69, # D9, # 4E, # 23
# FEC9: # 46, # EB, # 21, # 15, # 80, # A7, # ED, # 42
# FED1: # CC, # EF, # 57, # 28, # 0A, # CD, # E0, # 57
# FED9: # 28, # 04, # FE, # BF, # 20, # E8, # A7, # D9
# FEE1: # ED, # 61, # C9
6) Use the "B" set
Bank = # 18.
7) Press "E". A menu appears
"Setup".
8) Choose menu item "Config Save", write the modified STS on
the disc.
To verify the changes, run ZX ASM 3.0, the Setup menu
select "Load sts" and specify the name
File "sts5.1a". Next, enter the program and kakuyunibud
otassembliruyte it. Then temporarily leave the STS and activate
the disassembly of labels (using the keyboard shortcut "SS +
5"). Instead of numbers you will see the corresponding label.
Little systematic information about the ZX ASM:
text and labels are on the same page
Memory (Bank = # 1E), table labels organized on the principle
of the stack and begins with end of the buffer. Each label is
defined in the program is in the table 5 + <Number of letters
in the name of> bytes. STS with disassembly analysis of this
region, and if the value tags and the address or number in a
team match, the prints label, or - number. If the area is kind
of nonsense, nothing terrible happens and the computer does not
hang or reset. Disassembling labeled
runs slower than usual. If the
Your program uses are not very many labels, you almost do not
notice the difference in performance. But if the labels, the
disassembled text output may slow in the 4 - 5 times. Procedure
of disassembling with labels for ZX ASM 3.0 get a longer,
compared with the procedures for MASM 1.1 and ALASM, and as a
result it took much of the buffer user function. For this
function, there are only 6 bytes to FE2A on # FE2F inclusive.
If your function does not fit into this area, you can do one of
two things:
1) Donate regime disassembling
with a tag that has been at # FE71 team
JP # F86A. In this case, you can use for the user function
memory # FE2A to # FE5B and # FE74 on # FEE3 inclusive (which
is 162 bytes).
2) VPomestit HPE Vadresu # FE2A team 3
XXXX, and XXXX is the address to place your
function.
It should be noted that when the work mode
disassembling tagged spoils 28
byte in the display area, starting at address
# 57E0 (and you yourself can change these
28 bytes as you want - it does not interfere with normal
operation STS). When downloading ZX ASM'a STS will be loaded
automatically, but not whole, but only the principal part (the
file sts5.1a). Therefore, during the work will be
The functions of "Disasm to Disk" and
"Setup", ie when you try to call STS
reset. So it is better not to press the keys "D" and "E". To
save disk space can erase files
"STS5.1 " and "sts5.1b ", if you do not run separately
from the STS ZX ASMa. Not Remember that the undocumented
commands to work with the halves of the index registers in
various ways indicated in the text program in assembler ZX ASM
(XL, XH, YL, YH) and when viewing the disassembled program in
STS (LX, HX, LY, HY).