DECLARE SUB plotbyte (xpos!, ypos!, byte!)
DECLARE FUNCTION bitset! (nextbyte!, bit!)
DIM file%(0 TO 32700)
OPEN "ap2k~1.ic3" FOR BINARY AS #1
skipto = 13650
SCREEN 13
WHILE NOT EOF(1)
bytenum = bytenum + 1
a$ = INPUT$(1, #1)
nextbyte = ASC(a$)
IF bytenum < UBOUND(file%) THEN file%(bytenum) = nextbyte
IF skipto <> 0 THEN
IF bytenum > skipto THEN
plotbyte xpos, ypos, nextbyte
xpos = xpos + 1
IF xpos > 256 THEN xpos = 0: ypos = ypos + 10
IF ypos > 190 THEN CLS : ypos = 0
LOCATE 1, 262 / 8: PRINT bytenum;
END IF
END IF
IF bytenum MOD 25 = 0 THEN LOCATE 1, 262 / 8: PRINT bytenum
WEND
FUNCTION bitset (nextbyte, bit)
x = nextbyte AND (2 ^ bit)
IF x = 0 THEN bitset = 0 ELSE bitset = 1
END FUNCTION
SUB plotbyte (xpos, ypos, nextbyte)
FOR bit = 0 TO 7: PSET (xpos, (7 - bit) + ypos), 15 * bitset(nextbyte, bit): NEXT
END SUB


What I notice is that most of the rom (at least half of the 32k is the character data). It's a 9 pin printer so to get the NLQ characters it makes two passes of the printhead for 18 dots vertically.
Each character is given as a draft, then italics, then the vertically interleaved NLQ character. Some characters have more than one NLQ version for different widths (pica or elite possibly). Capital A for example. Many only have one NLQ version.

No comments:
Post a Comment