Oddities system software!
(C) Alone Coder / Any
STS 5.1 by STALKER
STS 5.1 is a very strange Editor
line mode Hex Dump.
If this line was a "" symbol, then
After you press Enter, when the string is copied into memory,
the bytes will be skipped. The last byte string in this case
will be taken from the previous version (which existed prior to
editing), and, more simply, from the ceiling.
At this glitch already referred someone somewhere
(Go, find out now!), Leads to even
way to remedy that reduces the length of the buffer the user.
Here is another way:
Copy from # DE10 to # DE1B -> # DE0F
# DE1B: JR Z, # DE22
DEC DE
After such a correction bytes marked with the symbol "" will
not change.
Corrections must be done not on a running STS'e, but the
downloaded file to a different page sts5.1a!
Improper positioning of the 0-th
track after changing the drive - a chronic disease for all
versions of STS. Version 6.2 Ivan Roshchin fixed, and over 5.1
seem to be nothing is yet known ...
ALASM 4.1 6x7 by ALEM
ALASM has a glitch in the assembly,
associated with the intersection of the team address
# 8000. In most cases, this leads
to the fact that a piece of the team to address # 7FFF
inclusive, compiled fine, but the rest of the erasure start
ALASM'a.
This bug has already been described MAX'om in the journal
"Black Crow" # 3. Explained glitch the fact that during his
work ALASM (as however, and other assemblers) moves
in the 2 nd page and its contents are old
at this time is stored in so-called System page (usually 4-th
page). After exiting the assembly (as well as after RUN, DEBUG
etc.) pages, of course, swapped back.
Prefiksirovannye teams that do not suffer. If the previous
command has ended to # 7FFF, and the next is at # 8000,
then the problems will not arise too. And in general,
if you know about this glitch, it can be
control. For example, the initialization procedure in my AC
Edit calmly crosses # 8000. Another thing that I had neither
me:)).
A better, of course, just write your program in the fast
memory.
In going through the address # C000 glitch is not
arises.
There is another glyuchok in ALASM, which
fix nevozmozhno.On associated with a specific single-pass
method kompilyatsii.Pravda, you first need to explain how it
works one-pass compiler.
The compiler scans the text of the program from top to
bottom, assembliruya team, defining the labels and affixing
certain parameters teams in their address chast.Esli compiler
encounters the expression is not defined above tag, it displays
a message error. If he meets is simply not
already defined a label, then it writes the name
this label and the address of the address part of the team
(Sorry, pun) in tablitsu.Kogda mark will be determined, all the
blank address of commands Organization, which should contain
the address of the tags are filled, and their occurrence
removed from the table.
Now, attention! How could compile
a fragment?
DUP 7
LD A, (BC)
XOR (HL)
AND 240
XOR (HL)
LD (DE), A
INC B; +0
INC H; +1
INC D; +2
LD A, D; +3
AND 7; 4
CALL Z, DDEU; +6
EDUP
ORG $ -9
JP PRRQ; +0
PR1ST PUSH BC; +3
PUSH DE; +4
PUSH HL; +5
BIT 0, C; +6
JR Z, PR1STL; +8
...
DDEU LD A, E
ADD A, 32
LD E, A
RET C
LD A, D
SUB 8
LD D, A
RET
Insides DUP'a otkompilyatsya 7 times
then the current address is moved to command INC B (for
convenience, I have to command offset of this address), and ...
But the label DDEU is not defined yet! AND
after it determines its value
will be written by a relative at 7
parameter in the command CALL, which at the moment will no
longer exist! The result will be broken by any innocent BIT
Team and JR!
Therefore, these pieces should be written as follows:
DUP 6
LD A, (BC)
XOR (HL)
AND 240
XOR (HL)
LD (DE), A
INC B
INC H
INC D
LD A, D
AND 7
CALL Z, DDEU
EDUP
LD A, (BC)
XOR (HL)
AND 240
XOR (HL)
LD (DE), A
...
Better yet, make maker.
Gluck with the 11-character name of the disk mode directory
ALASM'e: If the drive name has all 11 characters, then the next
may appear completely random characters arbitrary number.
Correct the seal 11-character name should be taken into account
As the end of the name: 1) the end of the sector, 2) B # 0, 3)
fixed 7-bit (Which, incidentally, when you print to reset).
Probably, many lack the Help alasma.Ego at startup so you
can kill (the command itself Help on this, of course, is not
affected):
# B77E: JP # 8B8F
However, even exempt the following
15 bytes. Although, strictly speaking, they can win
and elsewhere: Coding of the masters so
The original that their programs more streamlined and optimized
...
In these 15 bytes (more precisely, we only need 13) and we
place our program print the drive name:
# B781: LD A, (HL)
AND 127
RET Z
CALL # 8C96
OR (HL)
RET M
INC L
JR NZ, # B781
RET
And changing the link below:
# 99D1: CALL # B781
Naturally, all this have to do it is yet again not working
alasme, and the downloaded at # 8000 file alasm67.