The example can be loaded into a copy of QuickBasic and then saved as a plain text file:
DECLARE FUNCTION Shade& (red!, green!, blue!)
DECLARE SUB GetShiftStates (shift AS ANY)
CONST FALSE = 0
CONST TRUE = NOT FALSE
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
TYPE RegTypeX
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
DX AS INTEGER
Bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
ds AS INTEGER
es AS INTEGER
END TYPE
TYPE ShiftType
right AS INTEGER
left AS INTEGER
ctrl AS INTEGER
alt AS INTEGER
scrollLockState AS INTEGER
numLockState AS INTEGER
capsLockState AS INTEGER
insertState AS INTEGER
END TYPE
DIM shift AS ShiftType
' Declare Sub/Functions
DECLARE SUB Interrupt (intnum%, inreg AS RegType, outreg AS RegType)
DECLARE SUB InterruptX (intnum%, inreg AS RegTypeX, outreg AS RegTypeX)
DECLARE SUB BOOM (BOOMA!, BOOMB!, PakBeetBOOM())
SCREEN 13: CLS
PALETTE 2, Shade&(0, .7, 0)
PALETTE 34, Shade&(.4, .1, .9)
A = 100: B = 93: LR = 1: LR2 = 1
DIM PakBeetAchtergrond(200)
DIM PakBeetAchtergrond2(200)
DIM PakBeetBOOM(200)
LINE (0, 0)-(320, 100), 0, BF
LINE (0, 100)-(320, 200), 92, BF
CIRCLE (20, 20), 10, 29: PAINT (20, 20), 29, 29
GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond
KEY 15, CHR$(&H0) + CHR$(&H1D)
KEY 16, CHR$(&H0) + CHR$(&H38)
ON KEY(16) GOSUB HandGranate: KEY(16) ON ' Alt
ON KEY(12) GOSUB left: KEY(12) ON ' Left Arrow
ON KEY(13) GOSUB right: KEY(13) ON ' Right Arrow
DO
SELECT CASE LR
CASE 1: GOSUB L
CASE 2: GOSUB R
END SELECT
GetShiftStates shift
IF shift.ctrl = 1 THEN GOSUB Shoot
IF shift.right = 1 THEN GOSUB WaitOut
IF SchietLock < 10 THEN SchietLock = SchietLock + 1
LOOP UNTIL INKEY$ = "q"
END
L:
'PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 8, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15Bd2uhul2euC2hfedrdlBd3C34d4rdC15lBhBlhuBr2C34u3d4": A = A - 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 8, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15rl2ru2C2hfrudrdlBd2C15gdrC34ud2lrdrdC15lh": A = A - 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 8, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r": A = A - 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 8, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15udrdgfheul2Bu2C2r3dlBd3C34hfgd2urdC15gl": A = A - 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 8, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15udrl2uC2erdrdBdBlC15dguC34udfdldlr4C15dBl3l": A = A - 2: FOR Tel = 1 TO 300: NEXT Tel
RETURN
R: _
'
'PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 4, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15Bd2ueur2huC2eghdldrBd3C34d4ldC15rBeBreuBl2C34u3d4": A = A + 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 4, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15lr2lu2C2egludldrBd2C15fdlC34ud2rldldC15re": A = A + 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 4, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l": A = A + 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 4, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15udldfgehur2Bu2C2l3drBd3C34egfd2uldC15fr": A = A + 2: FOR Tel = 1 TO 300: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 4, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "C15udlr2uC2hldldBdBrC15dfuC34udgdrdrl4C15dBr3r": A = A + 2: FOR Tel = 1 TO 300: NEXT Tel
RETURN
AllKeysOff:
KEY(16) OFF
KEY(15) OFF
KEY(12) OFF
KEY(13) OFF
RETURN
AllKeysOn:
KEY(16) ON
KEY(15) ON
KEY(12) ON
KEY(13) ON
RETURN
left:
LR = 1: LR2 = 1
RETURN
right:
LR = 2: LR2 = 2
RETURN
Shoot:
IF SchietLock < 2 THEN SchietLock = 0: GOTO EindeSchietvoorLock
SELECT CASE LR2
CASE 1: LR = 0: GOSUB AllKeysOff
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l2": FOR Tel = 1 TO 100: NEXT Tel: PLAY _
"MBO1T255L64abcdbgebdegd": SchietLock = 0
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l3C14l": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l3C12l2C14er": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l3C12l": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l3C14l": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l2": FOR Tel = 1 TO 100: NEXT Tel
GOSUB AllKeysOn
'
CASE 2: LR = 0: GOSUB AllKeysOff
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r2": FOR Tel = 1 TO 100: NEXT Tel: PLAY _
"MBO1T255L64abcdbgebdegd": SchietLock = 0
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r3C14r": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r3C12r2C14hl": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r3C12r": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r2C14r": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r2": FOR Tel = 1 TO 100: NEXT Tel
GOSUB AllKeysOn
END SELECT
EindeSchietvoorLock:
RETURN
WaitOut:
SchietLock = 0
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET
IF LR <> 0 THEN LR2 = LR
SELECT CASE LR2
CASE 1: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r C7Bu3Bl4l2"
CASE 2: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l C7Bu3Br4r2":
END SELECT
LR = 0
PALETTE 15, Shade&(.8, .8, .8)
PALETTE 2, Shade&(0, .5, 0)
PALETTE 7, Shade&(.3, .3, .3)
PALETTE 34, Shade&(.3, 0, .7)
NieuwUnderSubWaitOut:
GetShiftStates shift
IF shift.right = 1 THEN GOTO NieuwUnderSubWaitOut
PALETTE 15, Shade&(1, 1, 1)
PALETTE 2, Shade&(0, .7, 0)
PALETTE 7, Shade&(.5, .5, .5)
PALETTE 34, Shade&(.4, .1, .9)
RETURN
HandGranate:
GOSUB AllKeysOff
SELECT CASE LR2
CASE 1: HG1 = A: HG2 = B - 5: HG5 = -1
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond
GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15d2lC2ldr": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15dglC2ldr": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15gl2C2ldr": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15lh2C2ldr": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond
CASE 2: HG1 = A: HG2 = B - 5: HG5 = 1
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond
GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15d2rC2rdl": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15dfrC2rdl": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15fr2C2rdl": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond: PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15re2C2rdl": FOR Tel = 1 TO 100: NEXT Tel
PUT (A - 6, B - 6), PakBeetAchtergrond, PSET: GET (A - 6, B - 6)-(A + 6, B + 6), PakBeetAchtergrond
END SELECT
FOR Tel = 1 TO 5
FOR teller = 1 TO 25: NEXT teller
IF LR2 = 1 THEN PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15gl"
IF LR2 = 2 THEN PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15fr"
PUT (HG1 - 3, HG2 - 3), PakBeetAchtergrond2, PSET: HG1 = HG1 + HG5: HG2 = HG2 - 1: GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2: PSET (HG1, HG2): DRAW "C2urd"
NEXT Tel
FOR Tel = 1 TO 10
FOR teller = 1 TO 25: NEXT teller
IF LR2 = 1 THEN PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15gl"
IF LR2 = 2 THEN PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15fr"
PUT (HG1 - 3, HG2 - 3), PakBeetAchtergrond2, PSET: HG1 = HG1 + HG5: HG2 = HG2 - 0: GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2: PSET (HG1, HG2): DRAW "C2urd"
NEXT Tel
FOR Tel = 1 TO 10
FOR teller = 1 TO 25: NEXT teller
IF LR2 = 1 THEN PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15gl"
IF LR2 = 2 THEN PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15fr"
PUT (HG1 - 3, HG2 - 3), PakBeetAchtergrond2, PSET: HG1 = HG1 + HG5: HG2 = HG2 + 1: GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2: PSET (HG1, HG2): DRAW "C2urd"
NEXT Tel
FOR Tel = 1 TO 5
FOR teller = 1 TO 25: NEXT teller
IF LR2 = 1 THEN PSET (A, B): DRAW "BdC15rl2ru2C2udrdurudBlBd3C34d2ldlr3BuBl3C15euBd4BllBr4r Bu3Bl4C34duruC15gl"
IF LR2 = 2 THEN PSET (A, B): DRAW "BdC15lr2lu2C2udlduludBrBd3C34d2rdrl3BuBr3C15huBd4BrrBl4l Bu3Br4C34duluC15fr"
PUT (HG1 - 3, HG2 - 3), PakBeetAchtergrond2, PSET: HG1 = HG1 + 0: HG2 = HG2 + 1: GET (HG1 - 3, HG2 - 3)-(HG1 + 3, HG2 + 3), PakBeetAchtergrond2: PSET (HG1, HG2): DRAW "C2urd"
NEXT Tel
PUT (HG1 - 3, HG2 - 3), PakBeetAchtergrond2, PSET
PALETTE 0, 20
BOOM HG1, HG2, PakBeetBOOM()
PALETTE
GOSUB AllKeysOn
RETURN
ReturnBack:
RETURN
SUB BOOM (BOOMA, BOOMB, PakBeetBOOM())
GET (BOOMA - 9, BOOMB - 9)-(BOOMA + 9, BOOMB + 9), PakBeetBOOM
PLAY "MBT255L64O0aaafffgfgfgbgdegfgffgd."
PSET (BOOMA - 0, BOOMB - 0): DRAW "S1 C15ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 0, BOOMB - 0): DRAW _
"S1 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 1, BOOMB - 2): DRAW "S2 C00ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 1, BOOMB - 2): DRAW _
"S2 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 2, BOOMB - 2): DRAW "S3 C15ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 2, BOOMB - 2): DRAW _
"S3 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 0, BOOMB - 0): DRAW "S4 C15ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 0, BOOMB - 0): DRAW _
"S4 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 2, BOOMB - 2): DRAW "S3 C15ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 2, BOOMB - 2): DRAW _
"S3 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 1, BOOMB - 2): DRAW "S2 C00ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 1, BOOMB - 2): DRAW _
"S2 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
PSET (BOOMA - 0, BOOMB - 0): DRAW "S1 C15ud2ulr3C14ulul2dld2rdr2ur2C65u3lul4dld4rdr4urC41BuBru4lul6dld6rdr6uru S4": FOR Tel = 1 TO 300: NEXT Tel: PSET (BOOMA - 0, BOOMB - 0): DRAW _
"S1 C00ud2ulr3ulul2dld2rdr2ur2u3lul4dld4rdr4urBuBru4lul6dld6rdr6uru S4": PUT (BOOMA - 9, BOOMB - 9), PakBeetBOOM, PSET
END SUB
SUB GetShiftStates (shift AS ShiftType) STATIC
DIM reg AS RegType
reg.ax = &H200
Interrupt &H16, reg, reg
shift.right = reg.ax AND 1
shift.left = (reg.ax AND 2) \ 2
shift.ctrl = (reg.ax AND 4) \ 4
shift.alt = (reg.ax AND 8) \ 8
shift.scrollLockState = (reg.ax AND 16) \ 16
shift.numLockState = (reg.ax AND 32) \ 32
shift.capsLockState = (reg.ax AND 64) \ 64
shift.insertState = (reg.ax AND 128) \ 128
END SUB
FUNCTION Shade& (red!, green!, blue!) STATIC
R& = red! * 63!
G& = green! * 63!
B& = blue! * 63!
Shade& = R& + G& * 256& + B& * 65536
END FUNCTION