ZX81-IDE Software Development Tool, IDE
Posted: Tue Mar 13, 2012 12:55 am
I am not sure, but I think I did not post it before, anyway worth now for a new thread.
I am working on an IDE for ZX81 software developments and used to take FASM (flat assembler) as engine and ported it to Z80 instruction set.
The assembler supports macro instructions and full instruction set of Z80 but not the undocumented instructions. This maybe added later, has now no priority for me. There is also one additional matter, labels are supported only with ':' at the end or label directive (sparely used in programs, the ':' is mostly used as I found). I did found some source code where labels at the beginning of the line are interpreted without ':'. This could be added later too.
FASM for Z80 is supported as either WIN, LINUX or DOS Version, as command line version and for WIN or DOS as IDE with some multi window syntax highlight editor. I integrated a tape loader interface which is quite new and working only with WIN. Could be ported ot other OSes on request. There is a small framework for letting own assembler program code run on a ZX81, a simple data structure for a REM statement and a auto run feature for programs. I plan to support full basic programming not as macros, deeply integrated like the assembler instructions which allows a wild mix of BASIC and Z80 Assembler programming in the near future. For now the framework has to do the job.
Programs can simply loaded from PC to ZX81 via sound card and a audio cable. The ear phone output brings enough power to load software into the Zeddy. But you have to be sure to use mono cables or adapters. It does not work with stereo cables. I use a stereo cable with mono adapters at the end, did not found pure mono cables. Output of about 65% (about 1.6 Vss) is enough, higher output works same good, so you can use 100% but better not with big amplifiers. With only one keypress (F9) code is compiled and loaded automatically, interrupted with a message box to let your start LOAD "" at ZX81. Programs could be compiled (assembled) without transfer using CTRL-F9 or in "Run" menu. This is loaded with normal speed of about 38 chars/second. Programs from disk could be transferred same way but (for now) can not be loaded into the IDE, just transferred: .p files, .o, .80 or .81 files.
The loader should work for ZX80 programs same way but did never try due to missing this model in my collection. New feature is the fast loader which can transfer with approx 1kByte/second which is 25 times faster. It's a two stage loader which is 1k compatible, so does not use memory above 16508 ($407C). The loader has 72 byte program code and uses a 65 byte window in the variable section to run. A bit tricky programmed but working very well with all programs I could test. Due to the 2-stage concept it does not need to transfer the loader on a ZX81 before, this is done automatically with normal speed first and continue with the desired program with high speed after. So miminum loading time is now about 7 seconds for even small programs. But could load a 8 kByte program within 17 seconds total loading time. I try to upspeed it with another loading algorithm which needs more ressources and will not work with 1k programs, e.g need a memory module. I try to realize about 4 kByte/second or more with increasing speed and compressing data. But needs of course more code and can not be run in variables section. And I am working on data encryption / password protection for programs created or transmitted with the IDE. For whom it may concern.
The loader can create automatically (or manually) desired wav files either with normal loading speed or 2-stage-fastloader. Could be used/transmitted to anybody with ZX81 and desired memory kit depending on program. WAV files are created with 30 kHz sample frequency, optimized for the fast loader but could be compressed with any zip engine to about 2 or 3 % of original size.
So have fun with this program, will have more updates in future. Comments or ideas for realizing welcome.
I am working on an IDE for ZX81 software developments and used to take FASM (flat assembler) as engine and ported it to Z80 instruction set.
The assembler supports macro instructions and full instruction set of Z80 but not the undocumented instructions. This maybe added later, has now no priority for me. There is also one additional matter, labels are supported only with ':' at the end or label directive (sparely used in programs, the ':' is mostly used as I found). I did found some source code where labels at the beginning of the line are interpreted without ':'. This could be added later too.
FASM for Z80 is supported as either WIN, LINUX or DOS Version, as command line version and for WIN or DOS as IDE with some multi window syntax highlight editor. I integrated a tape loader interface which is quite new and working only with WIN. Could be ported ot other OSes on request. There is a small framework for letting own assembler program code run on a ZX81, a simple data structure for a REM statement and a auto run feature for programs. I plan to support full basic programming not as macros, deeply integrated like the assembler instructions which allows a wild mix of BASIC and Z80 Assembler programming in the near future. For now the framework has to do the job.
Programs can simply loaded from PC to ZX81 via sound card and a audio cable. The ear phone output brings enough power to load software into the Zeddy. But you have to be sure to use mono cables or adapters. It does not work with stereo cables. I use a stereo cable with mono adapters at the end, did not found pure mono cables. Output of about 65% (about 1.6 Vss) is enough, higher output works same good, so you can use 100% but better not with big amplifiers. With only one keypress (F9) code is compiled and loaded automatically, interrupted with a message box to let your start LOAD "" at ZX81. Programs could be compiled (assembled) without transfer using CTRL-F9 or in "Run" menu. This is loaded with normal speed of about 38 chars/second. Programs from disk could be transferred same way but (for now) can not be loaded into the IDE, just transferred: .p files, .o, .80 or .81 files.
The loader should work for ZX80 programs same way but did never try due to missing this model in my collection. New feature is the fast loader which can transfer with approx 1kByte/second which is 25 times faster. It's a two stage loader which is 1k compatible, so does not use memory above 16508 ($407C). The loader has 72 byte program code and uses a 65 byte window in the variable section to run. A bit tricky programmed but working very well with all programs I could test. Due to the 2-stage concept it does not need to transfer the loader on a ZX81 before, this is done automatically with normal speed first and continue with the desired program with high speed after. So miminum loading time is now about 7 seconds for even small programs. But could load a 8 kByte program within 17 seconds total loading time. I try to upspeed it with another loading algorithm which needs more ressources and will not work with 1k programs, e.g need a memory module. I try to realize about 4 kByte/second or more with increasing speed and compressing data. But needs of course more code and can not be run in variables section. And I am working on data encryption / password protection for programs created or transmitted with the IDE. For whom it may concern.
The loader can create automatically (or manually) desired wav files either with normal loading speed or 2-stage-fastloader. Could be used/transmitted to anybody with ZX81 and desired memory kit depending on program. WAV files are created with 30 kHz sample frequency, optimized for the fast loader but could be compressed with any zip engine to about 2 or 3 % of original size.
So have fun with this program, will have more updates in future. Comments or ideas for realizing welcome.