1 DIM ctrl% 31:X%=ctrl%:Y%=X%DIV256 10OSBYTE = &FFF4 20OSASCI = &FFE3 30OSBPUT = &FFD4 40addrL= &70:addrH= &71:endL= &72:endH= &73:in=&76:exit=&78 50DIM START 300:DIM p%(15):max%=80:DIM data% max%-1 60FOR I% = 0 TO 2 STEP 2 : P% = START 70[OPTI% 80.init 90LDA #2 100LDX #2 110JSR OSBYTE 120LDA #3 130LDX #4 140JSR OSBYTE 150LDA #7 160LDX #8 170JSR OSBYTE 180LDA #8 190LDX #8 200JSR OSBYTE 210LDA #0 220STA exit 230RTS 240.MainLoop 250JSR CheckSerial 260JSR CheckKeyboard 270LDA exit 280CMP #0 290BEQ MainLoop 300LDA #0 310STA exit 320RTS 330.CheckSerial 340LDA #145 350LDX #1 360JSR OSBYTE 370BCS NoSerial 380TYA 390CMP #60 400BNE Print 410STA exit 420.NoSerial 430RTS 440.Print 450JSR OSASCI 460RTS 470.CheckKeyboard 480LDA #145 490LDX #0 500JSR OSBYTE 510BCS NoKey 520LDA #138 530LDX #2 540JSR OSBYTE 550.NoKey 560RTS 570.Image 580.loop 590LDX #1 600LDA #145 610JSR &FFF4 620BCS loop 630TYA 640LDY #0 650STA (addrL),Y 660INC addrL 670BNE check 680INC addrH 690.check 700LDA addrH 710CMP endH 720BCC loop 730BNE done 740LDA addrL 750CMP endL 760BCC loop 770.done 780RTS 790.GetSerial 800LDA #145 810LDX #1 820JSR OSBYTE 830BCS GetSerial 840STY &76 850RTS 860] 870NEXT 880CALL init 890OSCLI"FX4,2" 900OSCLI"FX3,5":PRINT"ATD192.168.0.75:8065":OSCLI"FX3,4" 910M%=0:D%=1:B%=128 920MODE 1 930OSCLI"FX229,1":OSCLI"FX21" 940REPEAT:CALL MainLoop:PROCs:UNTIL FALSE 950END 960DEFPROCs 970OSCLI"FX2,1" 980LOCAL T$,S$:T$="":S$="" 990REPEAT S$=CHR$(GET) 1000IF S$<>">"THEN T$=T$+S$ 1010UNTIL S$=">":S$="":OSCLI"FX2,2" 1020N$=LEFT$(T$, INSTR(T$, " ")-1) 1030R$=MID$(T$, INSTR(T$, " ")+1) 1040T$="" 1050IF N$="new" OR N$="break" THEN CLS 1060IF N$="pb" THEN PROCp 1070IF N$="pos" THEN PROCc 1080IF N$="mode" THEN PROCm 1090IF N$="pal" THEN PROCl 1100IF N$="colour" THEN PROCu 1110IF N$="link" THEN PROCk 1120IF N$="linkbg" THEN PROCb 1130IF N$="IMGSTART" THEN PROCi 1140IF N$="title" THEN PRINTTAB(0,0) 1150IF N$="FILEPROMPT" THEN PROCf 1160ENDPROC 1170DEFPROCm:M%=INT(VAL(R$)):VDU22,M%:ENDPROC 1180END 1190DEFFNp:OSCLI"FX2,1":LOCAL T$,S$:T$="":S$="" 1200REPEAT:T$=T$+S$:S$=CHR$(GET):UNTIL S$=">":OSCLI"FX2,2" 1210=T$ 1220DEFPROCl:PRINT T$:LOCAL P$, C%, I%, F%:I%=0:C%=0:F%=TRUE:P$=R$ 1230REPEAT:C%=INSTR(P$,","):L$=LEFT$(P$,(C%-1)):P$=MID$(P$,C%+1,LEN(P$)):p%(I%)=INT(VAL(L$)):I%=I%+1:UNTIL C%=0 1240FOR L%= 0 TO (I%-1):VDU19,L%,p%(L%),0,0,0:NEXT 1250ENDPROC 1260DEFPROCu:COLOUR INT(VAL(R$)):D%=INT(VAL(R$)):ENDPROC 1270DEFPROCk:addr$=LEFT$(R$, INSTR(R$, " ") - 1):desc$=MID$(R$, INSTR(R$, " ") + 1):COLOUR2 1280IF M%=0 THEN COLOUR 129 ELSE COLOUR B% 1290PRINT desc$;:COLOUR 128:COLOUR D%:ENDPROC 1300DEFPROCi 1310addr=EVAL(LEFT$(R$, INSTR(R$, " ") - 1)):end=EVAL(MID$(R$, INSTR(R$, " ") + 1)) 1320?&70 = addr AND 255:?&71 = addr DIV 256:?&72 = end AND 255:?&73 = end DIV 256 1330CALL Image 1340E$=FNp 1350end$=MID$(E$, INSTR(E$, " ") + 1):VDU31,0,VAL(end$):ENDPROC 1360DEFPROCb:B%=INT(VAL(R$))+128:ENDPROC 1370DEFPROCp 1380IF M%=0 THEN COLOUR 0:COLOUR 129 1390IF M%<>0 THEN COLOUR D%+129 1400PRINT"Down to Continue";:COLOUR D%:COLOUR 128:ENDPROC 1410DEFPROCc:h$=LEFT$(R$, INSTR(R$, " ") - 1):v$=MID$(R$, INSTR(R$, " ") + 1) 1420H=INT(VAL(h$)):V=INT(VAL(v$)):PRINTTAB(H,V);:ENDPROC 1430DEFPROCf:PROCk:size=VAL(addr$) 1440E%=VAL(addr$) 1450PRINT"Downloading ";desc$ 1460PRINT"Enter save location or blank to cancel":OSCLI"FX2,0":INPUT loc$ 1470IF loc$="" OSCLI"FX3,7":PRINT"":OSCLI"FX3,4":ENDPROC 1480PRINT loc$;'"Are you sure? Y/N":INPUT yn$ 1490IF yn$<>"Y"GOTO 2000 1500REM Check Validity of Filename (somehow?) ON ERR & IF ERR? 1510F%=OPENOUT(loc$):ch%=F% 1520OSCLI"FX2,1":OSCLI"FX3,7":PRINT"