Skip to content

Instantly share code, notes, and snippets.

@damieng
Created April 10, 2026 19:14
Show Gist options
  • Select an option

  • Save damieng/fe3640c2a788f6143d1b5f15b291ef42 to your computer and use it in GitHub Desktop.

Select an option

Save damieng/fe3640c2a788f6143d1b5f15b291ef42 to your computer and use it in GitHub Desktop.
VTX5000 Firmware BASIC
10 REM [7F] 1983 Scicon Ltd V3.1 RT/DS
80 GO SUB 9600: CLEAR ix-1850: GO SUB 9600: LET o=0: LET l=1: DIM a$(22): DIM b$(600): POKE 23609,50: LET b$(l TO l+l)=CHR$ o+CHR$ o
100 LET dm=9100: LET cl=9000: LET mc=9300: LET er=9050: LET gk=9400: LET tx=9500: LET mm=800: LET E$="": LET I$="": LET s$="c": FOR i=l TO 22: LET a$(i)=CHR$ 10: NEXT i
330 LET mf=ix+6: LET exc=ix+11: LET fmod=ix+45: LET id=ix+55: LET t=ix-PEEK ix-PEEK (ix+2)-256*(PEEK (ix+l)+PEEK (ix+3))
340 FOR i=o TO 9: LET I$=I$+CHR$ PEEK (id+i): NEXT i
350 LET ls=l: LET E$="Download Failure": IF PEEK exc=o THEN LET E$="": LET ls=o: GO TO 400
360 IF PEEK exc=7 THEN LET E$=""
400 PAPER l: BORDER o: INK 7: IF PEEK exc=8 THEN GO TO 2000
410 LET T$="": GO SUB tx
800 LET mn=o: GO SUB dm: GO TO mc
900 DATA "Main Micronet Menu",8,10,"Log ON or OFF","Micronet Terminal","Save Frame","View Frame","Print Frame","Downloader","Mailbox Message","Enter BASIC"
1000 LET mn=l: GO SUB dm: GO TO mc
1100 IF ls=l THEN LET E$="Already logged ON": GO TO mm
1110 IF I$(l)<> "?" THEN GO TO 1460
1400 GO SUB cl: LET E$="": INPUT "New ID No "; LINE q$: IF q$="" THEN GO TO mm
1440 IF LEN q$<> 10 THEN LET E$="Invalid ID number": GO TO 1400
1450 LET I$=q$: FOR i=o TO 9: POKE (id+i),CODE q$(i+l): NEXT i
1460 LET T$=I$: GO SUB tx: CLS : PRINT AT 5,8; FLASH l;"Phone Computer": LET ls=l: LET con=l+l: GO TO 2020
1700 GO SUB cl: IF ls=o THEN LET E$="Already Logged OFF": GO TO mm
1720 LET T$="*90#": GO SUB tx: POKE mf,o: LET X=USR str: IF X=2 THEN LET ls=o: GO TO mm
1730 GO SUB cl: PRINT AT 5,11;"Log OFF ?": PAUSE o: IF INKEY$ <> "y" THEN GO TO mm
1790 LET ls=o: LET T$="*90##": GO SUB tx: POKE mf,16: LET X=USR str: GO TO mm
1900 DATA "Logon Menu",3,3,"Automatic Log ON","Manual Log ON","Log OFF"
2000 LET con=o: GO SUB cl
2020 POKE mf,con: LET X=USR str: IF X=l THEN LET E$="": GO TO mm
2050 IF X=2 THEN LET E$="Line Break": LET ls=o: GO TO mm
2070 GO SUB cl
2090 CLS : PRINT AT 5,l;"You are still logged ON": PAUSE o: GO TO mm
3000 GO SUB 3100: SAVE q$CODE ix-960,960: GO TO mm
3100 GO SUB cl: INPUT "Filename ? "; LINE q$: RETURN
4000 LET mn=4: GO SUB dm: GO TO mc
4100 LET con=100: GO TO 2020
4200 GO SUB 3100: GO SUB 4400
4210 LOAD q$CODE : GO TO 4100
4400 PRINT AT 5,11;"Start Tape": RETURN
4900 DATA "View Frames Menu",2,1,"Current Frame","Stored Frame"
5000 POKE mf,16: LET X=USR str: RANDOMIZE USR 28041: GO TO mm
6000 LET mn=6: GO SUB dm: GO TO mc
6100 LET dl=25
6105 POKE fmod,123-CODE s$: POKE mf,dl: LET ix=ix-999: POKE 23732,ix-256*INT (ix/256): POKE 23733,ix/256: CLEAR ix-l: GO SUB 9600: PRINT AT 21,0;: LET X=USR str
6200 LET dl=9: GO TO 6105
6300 GO SUB cl: PRINT AT 3,o;"Start Frame is '";s$;"'"''"Press New Letter": PAUSE o: LET q$=INKEY$ : IF CODE q$=13 THEN GO TO 6000
6310 IF (q$[12][00]<"a") OR (q$>"z") THEN LET E$="Invalid Letter": GO SUB er: GO TO 6300
6320 LET E$="": LET s$=q$: GO TO 6000
6900 DATA "Downloader Menu",3,1,"Load,Exit & RUN","Load,Stay & RUN","Change Start Frame"
7000 LET E$=""
7010 LET mn=7: GO SUB dm: GO TO mc
7100 CLS : PRINT AT 5,o;"Please Wait": GO SUB 7700: FOR j=l TO 2+i: POKE t+j-l,CODE b$(j): NEXT j: GO TO 2000
7200 CLS : LET j=l: LET i=3: PRINT "Enter Text"''
7210 INPUT LINE q$: IF q$="" THEN GO TO 7240
7215 IF LEN q$>39 THEN LET E$="Line too long": GO SUB 7800: GO TO 7210
7220 LET E$="": GO SUB 7800: PRINT q$: IF q$(LEN q$)<> "#" THEN LET q$=q$+CHR$ 13+a$(l TO j): LET j=j+l
7225 LET b$(i TO i+LEN q$-l)=q$: LET i=i+LEN q$: IF i<557 THEN GO TO 7210
7230 LET E$="Buffer Full"
7240 LET i=i-3: LET b$(l)=CHR$ (i-256*INT (i/256)): LET b$(2)=CHR$ INT (i/256): GO TO 7010
7300 GO SUB 3100: SAVE q$ DATA b$(): GO TO 7000
7400 GO SUB 3100: GO SUB 4400: LOAD q$ DATA b$()
7500 POKE 23692,255: CLS : PRINT TAB 8; PAPER 7; INK 2;"Current Message"'': GO SUB 7700: FOR j=3 TO i+2
7510 IF b$(j)="#" THEN PRINT "#": GO TO 7540
7520 IF b$(j)=CHR$ 10 THEN GO TO 7540
7530 PRINT b$(j);
7540 NEXT j: PAUSE 3000: GO TO 7000
7700 LET i=CODE b$(l)+256*CODE b$(l+l): RETURN
7800 LET k=PEEK 23689: GO SUB er: PRINT AT 24-k,o;: RETURN
7900 DATA "Mailbox Message Menu",5,1,"Send Message","Prepare Message","Save Message","Fetch Message","Display Message"
8000 RANDOMIZE USR o
9000 CLS : GO SUB er: RETURN
9050 PRINT AT 21,l;" ";AT 21,l; PAPER 6; INK o;E$;AT o,o;: RETURN
9100 GO SUB cl: GO SUB er: RESTORE (1000*mn+900): READ m$: PRINT TAB ((32-LEN m$)/2); PAPER 7; INK 2;m$'': READ ni,os: PRINT " KEY FUNCTION"'': FOR i=o TO ni-l: READ m$: PRINT TAB (l+l);i;TAB (7);m$'': NEXT i: PRINT [14][01][14][00] INVERSE l;"ENTER";: PRINT " GOTO Main Menu": LET l$=CHR$ 17+CHR$ 2+" ON": IF ls=o THEN LET l$=CHR$ 17+CHR$ 4+CHR$ 16+CHR$ o+"OFF"
9235 PRINT AT 21,22;"Logged ";l$: RETURN
9300 LET E$="": PAUSE o: LET V$=INKEY$ : LET key=CODE V$: IF key=13 THEN GO TO mm
9310 IF key=0 THEN GO TO 9300
9330 IF key>47 AND key<(48+ni) THEN GO TO (100+mn*1000+900*(mn=o)+os*100*(key-48))
9340 LET E$="Invalid Key": GO SUB er: GO TO 9300
9500 POKE t,LEN T$: POKE t+l,o: FOR i=l TO LEN T$: POKE t+i+l,CODE T$(i): NEXT i: RETURN
9600 LET ix=32640: IF PEEK 23733>127 THEN LET ix=ix+32768
9610 LET str=ix+76: RETURN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment