2

I found some very old floppy disks. I sent them to a company to restore the files and they were still retrievable!

Next to old games and simcity save games I found some .BAS files.

Some of the names I recognize from the first games I made in my life, but the files look scrambled or compiled or something.

One of these files is i.e. this one (gzipped and base64):

begin-base64 644 ramlem.bas.gz
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
AAPaZbA1OQAA
====

If I remember it is an animated mix between a Rambo and a Lemming. When I open this file in Notepad++ I see something that LOOKS compiled or compressed or something.

I remember that I programmed first in QBASIC, but after a while in QuickBasic that had some more PRO features. Could it be that QuickBasic compressed files on save?

The files seem to be more then 30 years old. Of course I would love to see the original source or get it running!

Does anyone have a gut feeling what I am looking at and how I could get the original source code or run the file?

5
  • 3
    Downvoted because having to download a file to look at the text that you want us to identify... isn't going to happen.
    – dave
    Commented Nov 9, 2023 at 3:57
  • 4
    It’s not a text file. Although after gzipping it could fit in 60 lines of base64… Commented Nov 9, 2023 at 7:52
  • 2
    @another-dave it's a partly binary file, so it would not render in markdown properly. That's why I included a screenshot so maybe people could figure out by looking at that if they (understandably) didn't want to download the file. Bit more love man, you clearly help a lot of people - why also the negative part?
    – Dirk Boer
    Commented Nov 9, 2023 at 10:53
  • In case it makes it easier to recognize, the first 16 bytes of the unzipped file are FC 00 01 00 0C 00 81 01 82 01 06 00 01 02 03 04.
    – dan04
    Commented Nov 9, 2023 at 15:10
  • 1
    A hexdump of the unencoded file would be useful.
    – JeremyP
    Commented Nov 12, 2023 at 12:42

3 Answers 3

8

They seemed to be QuickBasic 4.5 files. A proprietary format from QuickBasic that was not only a text file, but included various other concepts like Subs - that were sort of sections into the file.

So the conclusion is; they are partly binary files that can only be read by QuickBasic 4.5.

I found the following site for a combination with DOSbox and QuickBasic to load the specific files.

https://www.qbasic.net/en/qbasic-downloads/DOS/Windows-Solutions.htm

I you also try to run old QuickBasic files and come across problems with mouse interfaces I recommended reading this answer: https://retrocomputing.stackexchange.com/a/28021/27410

7
  • 3
    As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Nov 9, 2023 at 8:43
  • 2
    Isn’t “sub” just BASIC jargon for a subroutine? How is it specific to that binary format? Commented Nov 9, 2023 at 15:54
  • 2
    @user3840170 It isn't specific to that format. It's not a text file, its tokenized. Which was quite common for early BASIC ”source” code.
    – BlackJack
    Commented Nov 9, 2023 at 17:40
  • 2
    @BlackJack: Indeed. There was an option to SAVE or LIST programs as ASCII text, but every line-numbered BASIC interpreter I worked with stored .BAS files in binary tokenized format by default.
    – dan04
    Commented Nov 9, 2023 at 17:56
  • 1
    QB64 detects it as a QuickBasic 4.5 file, tries to convert it, and fails on my system. That's probably fixable. That would let you try it on a modern system
    – Chris H
    Commented Nov 10, 2023 at 16:05
6

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
1
  • Thanks a lot for all the effort!
    – Dirk Boer
    Commented Nov 12, 2023 at 18:54
5

If this is indeed a QuickBasic 4.5 file, you could load it into QuickBasic 4.5 under some sort of DOS emulation (DOSBox etc.), then save it with SAVE "NEWFILE",A if I remember correctly to save it as ASCII text.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .