Martin_H wrote:
Rather than force everyone to fetch and build my conversion tool, I also checked in the Woz Mon script:
https://github.com/Martin-H1/TaliForth/ ... l-star.txt Cool! Thanks for posting!
You should post the binary file too; by incorporating it into the firmware you can make it show up instantly as either ROM or pre-initialized RAM. To accomplish that, put the binary image file into the same directory as the Appl1SRAM project, e.g. as
tali-l-star_5A00.bin (5A00 in the name is just a reminder where it expects to be loaded). Then use the Propeller tool to edit Apple1.spin as follows:
- Below the line that starts with "rom: "Memory" ", add a new line that reads:
Code:
tali: "Memory"
- Below the line that starts with "rom.StartEx", add a new line that reads:
Code:
tali.StartEx(@TaliFile, @TaliEnd, @TaliEnd, $5A00, 0)
If you want to emulate the image as pre-initialized RAM instead of ROM, use "@TaliFile, @TaliFile, @TaliEnd" as the first three parameters (the second parameter changes to @TaliFile). - Below the line that starts with "RomEnd", add the following three lines:
Code:
TaliFile
File "tali-l-star_5A00.bin"
TaliEnd
Now right-click on the Apple1.spin window title and click "Top Object File". Then hit Ctrl+F11 while the computer is connected to the L-Star. This will compile the program and store it in the EEPROM.
From now on, your L-Star has Forth as soon as you start. All you need to do is (presumably) enter "5A00R" in Woz mon.
You could even change the reset vector so it starts Forth whenever you reset the 6502:
- Insert the following above the DAT section in the Apple1.spin module:
Code:
PRI Patch(addrval, dataval)
byte[addrval + @RomEnd - $1_0000] := dataval
- Insert the following lines above the line that starts with "clock.activate...":
Code:
Patch($FFFC, $00);
Patch($FFFD, $5A);
NOTE: as of this writing, I haven't tried it myself but I intend to do so; I'm pretty sure it will work. I'll probably add the result as a new project in my Github repo (suggestions for a project name are welcome
). I think I'll also play around with adding a video generator that gives the 6502 direct access to the screen (like the OSI emulator, but with a slightly less wonky memory layout -- the OSI video hardware kept counting addresses even during blanking which makes the memory layout
weird).
===Jac