TYPE RegType
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
END TYPE
DECLARE SUB INTERRUPT (intnum AS INTEGER, inreg AS RegType, outreg AS RegType)
DECLARE SUB OUTW (p%, v%)
DECLARE SUB VGAmode (m%)
VGAmode 3
' 80x30 LFG!
DEF SEG = &H40
DIM CRTC AS INTEGER
CRTC = PEEK(&H64) * &H100 + PEEK(&H63)
OUTW CRTC, &HC11
OUTW CRTC, &HD06
OUTW CRTC, &H3E07
OUTW CRTC, &HDE12
OUTW CRTC, &HE715
OUTW CRTC, &H616
DEF SEG = &HB800
FOR y% = 0 TO 31
FOR x% = 0 TO 79
y$ = LTRIM$(STR$(y% + 1))
IF x% < LEN(y$) THEN
POKE 2 * (y% * 80 + x%), ASC(MID$(y$, 1 + x%, 1))
ELSE
IF x% MOD 2 THEN
POKE 2 * (y% * 80 + x%), &HDC
ELSE
POKE 2 * (y% * 80 + x%), &HDF
END IF
END IF
NEXT
NEXT
SLEEP
VGAmode 3
SUB OUTW (p AS INTEGER, v%)
OUT p, v% AND &HFF
OUT p + 1, v% \ &H100 AND &HFF
END SUB
SUB VGAmode (m%)
DIM REGS AS RegType
REGS.ax = m%
INTERRUPT &H10, REGS, REGS
END SUB