hperaza / zsm4 Goto Github PK
View Code? Open in Web Editor NEWZ80/Z180/Z280 Macro Assembler for CP/M, UZI180 and RSX180
License: GNU General Public License v2.0
Z80/Z180/Z280 Macro Assembler for CP/M, UZI180 and RSX180
License: GNU General Public License v2.0
Hello Hector Peraza,
while M80.COM handles 8bit references correctly (see attachment testm80.prn), ZSM4 generates the error "R" (see testzsm4.prn). The listing test2.prn shows the second file in which the variable "ValNum" is defined, which is referenced by TESTM80.MAC and TESTZSM4.MAC. When I link TESTM80.REL and TEST2.REL to TESTX.COM/TESTX.SYM with L80.COM, ZSID.TXT shows the correct use of "ValNum" (value 10H).
It seems that ZSM4 version 4.7 does not correctly handle the use of 8Bit (LOW) from the Extrn defined 16Bit variable "ValNum", which however the M80.COM/L80.COM and also the SLR180.COM/SLRNK.COM can do correctly.
Otherwise, I would like to thank you for your valuable work on ZSM4, it is a great contribution to the open source community. I use ZSM4 under my Z80 emulator "YAZE-AG" (Yet Another Z80 Emulator by AG, www.yaze-ag.de and also here on guthub.com) and on my real Z280 machine "CPU280" by
test2.txt
testm80.txt
testzsm4.txt
zsid.txt
Tilmann Reh (Germany).
Best regards
Andreas Gerlich (agl7, IRCNet: agl, Libera.Chat: agl)
(University of Ulm, Germany)
When the source contains one of the following typos (probably more, but haven't tested), then zsm4 does the strangest kind of things (i.e. crashing, exiting without compiling, writing its name in an endloss loop etc.) :
A>type test.mac
.z180
out0 (66h)
out0 66
end
When the instructions are typed correctly, then everything works out fine.
Tested with zsm4 v4.7 on an actual Z180-Computer and in a z80-emulator.
You have an .ODD and .EVEN… directive it would be convenient to have an ".ALIGN ". See https://github.com/jamesots/maz for example.
HI Hector,
Was updating the copy of ZSM from 41 to 42 in the ROMWBW distribution but on checking, the final .BIN file for the forth rom after linking was all 0's. There are no errors generated from assemble but rel files are slightly different. Linker is DR LINK 1.31. No changes to build process. REL files attached.
This is the link to directory for the files being assembled with ZSM
https://github.com/wwarthen/RomWBW/tree/dev/Source/Forth
The file in particular is camel80,azm which uses .phase/.dephase
The build code is
zx zsm =camel80.azm -/l
zx link -CAMEL80.BIN=CAMEL80
Link output from 41
LINK 1.31
ABSOLUTE 0000
CODE SIZE 1700 (0100-17FF)
DATA SIZE 0000
COMMON SIZE 0000
USE FACTOR 00
Link output from 42
LINK 1.31
ABSOLUTE 16B5 (0000-16B4)
CODE SIZE 1700 (0100-17FF)
DATA SIZE 0000
COMMON SIZE 0000
USE FACTOR 00
Please let me know if you need any more information.
Regards Phil
ZXCC = zxcc
ZSM4 = ../../Tools/cpm/zsm4.com
DRLINK = ../../Tools/cpm/drlink.com
TKB = ../../Tools/cpm/tkb.com
It seems to me that the INT routine does not parse correctly the string of characters, enabling some annoying errors to escape unnoticed.
Example: the line:
ld hl,1v2
is assembled as:
0000' 21 00FC ld hl,1v2
,without indicating the obvious syntax error: 1v2 is not a valid number! and 0FCH is not the correct value !
This way, you risk assembling a source containing such syntax errors without being warned about these errors!
The M80 assembler by Microsoft has the assembler directive
ds 35,"A"
so that 35 bytes are reserved and are initialized with the value of "A" (or 65 or 41h).
zsm4 v4.7 only accepts the first part of the directive
ds 35
but not a value for initialization.
I would like to request, that zsm4 can also initialize the reserved bytes with an arbitrary value.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.