11 March 2016 - Forum Rules
Started by Hamtaro126, September 07, 2011, 02:48:55 AM
; 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) next videooffset += 80 next
Quote from: syntax error on September 07, 2011, 05:48:05 AMWasnt ZZT written in Turbo Pascal?
Page created in 0.170 seconds with 19 queries.