Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Patching Vision2 for Slot 0

Vision2 was sold as a 32KB EPROM. As explained in the Developer Notes, cards smaller than 1MB are addressable at repeating intervals within that Slot's address space. This allows OZ to easily scan the top bank of a card, without needing to know its size.

By default, Vision2 cannot run from other card sizes because its DORs presume it will occupy the last two banks, but its bank switching code presumes it will occupy the first two banks. Both conditions only hold true for a 32KB card.

Consider the Z88 memory map:

Code Block
languagenone
Banks &00 - &3F are internal Slot 0 (lower half ROM, upper half RAM) 
Banks &40 - &7F are wired to Slot 1 (usually RAM for Expanded mode in old OZ)
Banks &80 - &BF are wired to Slot 2 
Banks &C0 - &FF are wired to Slot 3 (usually EPROM, only Slot with 12V)

RomCombiner includes patches to lift the restrictive card limitations for both Vision2 (full version) and for Vision/L (reduced feature version). The Vision2 patch amends the following byte values in the application's own bank switching code:

...

Original

...

Patched

...

Impact

...

C0

...

FE

...

Slot 3, from 1st bank to penultimate bank

...

C1

...

FF

...

Slot 3, from 2nd bank to last bank

...

80

...

BE

...

Slot 2, from 1st bank to penultimate bank

...

81

...

BF

...

Slot 2, from 2nd bank to last bank

Rather than masking out the top two bits of the bank address (which would make it Slot agnostic), Vision is limited to running in Slots 2 or 3 only, which is understandable considering early OZ needs a RAM card in Slot 1 for an Expanded machine.

Returning to the memory map above, our custom ROM will need one of these pairs of bytes patching to the addresses in Slot 0 which the Vision ROM will occupy (see $0a and $0b in the manifest below). The DORs of each bundled application were updated in a similar fashion.

image-20240411-150954.pngImage RemovedVision's code binds its ROM banks using static addressing which fails when not running from a 32KB Eprom. It needed to have this fixed prior to inclusion in this ROM image: Vision2 Fix Patch

Downgrade ROM Manifest

Code Block
languagenone
CFG.V3
; OZ ROM for slot 0 and total of 16 banks to update.
OZ.0,16
; Bank file, CRC, destination bank in slot 0.
"ozs0-400.32",$9de67a39,$00
"ozs0-400.33",$1d32d297,$01
"ozs0-400.34",$65ed5623,$02
"ozs0-400.35",$e2e022c6,$03
"ozs0-400.36",$8758704a,$04
"ozs0-400.37",$b860cf23,$05
"ozs0-400.38",$d3104e3f,$06
"ozs0-400.39",$5c5de229,$07
"flashst-197.40",$88ce8262,$08
"zip-xymodem.41",$83cf1ae5,$09
"vision2-206.42",$fd18a731,$0a
"vision2-206.43",$71ee7ae3,$0b
"file-area.44",$1ec9d2c1,$0c
"file-area.45",$6666ce43,$0d
"file-area.46",$420c789c,$0e
"ozs0-400.63",$3d6adf54,$1f

...