Created
April 10, 2026 19:14
-
-
Save damieng/fe3640c2a788f6143d1b5f15b291ef42 to your computer and use it in GitHub Desktop.
VTX5000 Firmware BASIC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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