« on: September 07, 2011, 02:48:55 am »
EDIT: Even though ZZT can be hackable, and many people do hack it, That ZZT and SuperZZT is a Hackable Freeware, Tim Sweeny and Epic allows it because of no source code. And therefore, using utilities like UNLZEXE and TSRs are allowed.
So that means that it is not a bad thing to post help here for ZZT and SuperZZT, Hopefully...
I'm using the pseudo-code for hacking ZZT to graphics mode as a TSR...
; Arguments: cx = character-cell X, cy = character-cell Y
; c = character code, f = foreground color, b = background color
videooffset = ((cy * 80) * 14) + cx; base address of the character cell on each plane
videobase = $A000; the start of EGA memory
characterseg = (? >> 4); where ? = the base address of your character set
characterbase = (? & $0F) + (c * 14); as above
for i = 0 to 13
DEF SEG characterseg; or however this is represented in x86 assembly
load A, (characterbase + i); the register names are all dummies here, use whatever works
DEF SEG videobase; set to write to video RAM
for j = 0 to 3
out $3C4, 2; a bit of voodoo programming to select the plane to access, since low-level EGA documentation
out $3C5, (1 << i); seems very hard to find
if (f & (1 << j) != 0) and (b & (1 << j) != 0) then store $FF, (videooffset + lineoffset)
else if (f & (1 << j) != 0) then store A, (videooffset + lineoffset)
else if (b & (1 << j) != 0) then store (A XOR $FF), (videooffset + lineoffset)
else store $00, (videooffset)
videooffset += 80
First, What (free) BASIC for DOS can combine Basic and ASM in one source? Need to have a way to convert both.
Second, can use DIM on the equals signs, but I must know how to convert it,
Third, This utility can be modded for better color palette options and SZZT support...