It's fantastic, Michael: compact, yet efficient and effective. Thanks much! -OGMMike wrote: ↑Fri Apr 04, 2025 9:15 am
In the meantime, and with cartconv in GTK3VICE 3.9, I could successfully make a *.crt file out of the raw binary of MINIMON (download):
At the moment it is sailing under a false flag - the Rabbit Tape accelerator also puts its firmware at $9800 -, but that's fine for now. Main advantage is, the tool now sits write protected in I/O (which is not the case when soft-loading a *.prg to RAM in I/O).Code: Select all
cartconv -t rabbit -i monitor.bin -o minimon.crt -n "VIC-2020 MINIMON" -l $9800
For those interested, don't bother to use the *.crt file with any VICE version older than 3.9!
Assembler for the VIC
Moderator: Moderators
- Orangeman96
- Vic 20 Enthusiast
- Posts: 183
- Joined: Tue Jan 16, 2024 3:42 pm
- Location: U.S.A.
Re: Assembler for the VIC
Re: Assembler for the VIC
Just had a closer look... could you elaborate a bit? I'm not really familiar with VIC20 hardware... and we don't have any freeze logic for VIC20 yet eitherThe firmware chip select logic works quite the same as Rabbit, yes, but the MINIMON cartridge hardware comes with some extras.

I'm just a Software Guy who has no Idea how the Hardware works. Don't listen to me.
- Mike
- Herr VC
- Posts: 5134
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Assembler for the VIC
First of all, here is a closeup of the controls on the MINIMON cartridge:groepaz wrote:[...] could you elaborate a bit?

From left to right:
- RESET button - with a short press, upon release, the logic delivers a clean 2 ms reset pulse to both VIC-20 and secondary cartridge.
A longer press (>1 second) first opens and pulls high the /RESET line in direction to the secondary cartridge (so that cartridge will not be notified later a reset had happened - internal banking logic, say, then retains its state -, then upon button release two things happen simultaneously: the 2 ms reset pulse is delivered (now to the VIC-20 only!) and the /BLK5 signal to the secondary cartridge is also opened and pulled high for roughly 0.3 seconds. During the KERNAL reset routine, an eventually present A0CBM signature will not be found, preventing the autostart of the secondary cartridge. The /BLK5 and /RESET lines will be reconnected to the secondary cartridge after those 0.3 seconds. - FREEZE - a LED that lights up in blue when reset is pressed for longer than 1 s, indicating the release will perform a freeze reset.
- MON ← I/O → CART switch: the switch in "MON" position maps whatever is put as memory chip in the ZIF socket into the $9800..$9FFF address range. With the switch in CART position, I/O2 and I/O3 are routed straight through to the secondary cartridge. It is in order to change the switch while the VIC-20 is powered on.
- PGM PCT jumper: The PCT position is intended for EPROMs (2716s) or already programmed EEPROMs (2816s or adapted 2864s). With EEPROMs, this setting provides a hardware write protect. The PGM position is intended for RAMs (6116s) or EEPROMs that are supposed to be programmed.
Greetings,
Michael
Re: Assembler for the VIC
OK so... looking at this now. Did i understand correctly:
- the MON/CART switch essentially enables/disables the cartridge (which is mapped to IO2/3)
- PGM enables writing to the cartridge (which obviously only works if there is static RAM or EEPROM in the socket)
- Reset (short) is just that, a regular reset
- Reset (long) resets and briefly "disables" a BLK5 cartridge to prevent it from starting. In this case also the "other" cartridge will not "see" reset (how is this even possible? Does the cartridge have a passthrough port?)
correct?
I am struggling a bit with how it even makes sense to support those details in emulation to be honest
- the MON/CART switch essentially enables/disables the cartridge (which is mapped to IO2/3)
- PGM enables writing to the cartridge (which obviously only works if there is static RAM or EEPROM in the socket)
- Reset (short) is just that, a regular reset
- Reset (long) resets and briefly "disables" a BLK5 cartridge to prevent it from starting. In this case also the "other" cartridge will not "see" reset (how is this even possible? Does the cartridge have a passthrough port?)
correct?
I am struggling a bit with how it even makes sense to support those details in emulation to be honest

I'm just a Software Guy who has no Idea how the Hardware works. Don't listen to me.
- Mike
- Herr VC
- Posts: 5134
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Assembler for the VIC
In essence, yes. There's circuitry on the cartridge, which arbitrates the I/Ox signals between the ZIF socket and the secondary cartridge.groepaz wrote:- the MON/CART switch essentially enables/disables the cartridge (which is mapped to IO2/3)
The reset logic is available all the time.
Check.- PGM enables writing to the cartridge (which obviously only works if there is static RAM or EEPROM in the socket)
Check. To both VIC-20 and secondary cartridge.- Reset (short) is just that, a regular reset
Yes, see here:- Reset (long) resets and briefly "disables" a BLK5 cartridge to prevent it from starting. In this case also the "other" cartridge will not "see" reset (how is this even possible? Does the cartridge have a passthrough port?)

From a certain point of view, this cartridge more acts as extension to the VIC-20 mainboard than just as cartridge.I am struggling a bit with how it even makes sense to support those details in emulation to be honest
With the switch set to MON, it effectively overlays its memory chip in the ZIF socket in the I/Ox range over whatever is provided by the secondary cartridge. When set to CART, the cartridge acts as a full pass-through to the secondary cartridge, but as said, the reset logic remains active.
Re: Assembler for the VIC
OK, with the passthrough this makes a lot of sense now.
I'll proceed implementing it - however, the cartridge system in xvic is quite simple (compared to x64) right now, "cartridge with passthrough" can't be emulated like this. So this part has to wait for a while - too much other stuff on the TODO list (and this will involve quite a few changes)
I'll proceed implementing it - however, the cartridge system in xvic is quite simple (compared to x64) right now, "cartridge with passthrough" can't be emulated like this. So this part has to wait for a while - too much other stuff on the TODO list (and this will involve quite a few changes)
I'm just a Software Guy who has no Idea how the Hardware works. Don't listen to me.
Re: Assembler for the VIC
Check r45665 - please test a bit 

I'm just a Software Guy who has no Idea how the Hardware works. Don't listen to me.