QRL

Developer(s): Jack Dohany
Date: 1986
Type: Program
Platform(s): TS 2068

RLE en/decoder.

Content

Appears On

Capital Area Timex Sinclair User Group’s Library Tape.
Library tape from the Sinclair Computer Users Society (SINCUS).

Related Products

Related Articles

Catalog of contents of CATS library tapes. Volume 8 Volume 9
Introduction to the file format, explanation of where to find and view them. Jack Dohany has written an encoder/decoder program.

Image Gallery

QRL

Source Code

    1 REM QRL by Jack Dohany
    2 REM (415)367-7781
    3 REM 10-86
    4 CLEAR VAL "30399"
    5 REM cassette version
    6 DIM E$(VAL "20"): LET C1=VAL "0": LET C2=VAL "7"
   10 LET STB=VAL "30400": LET BTS=STB+VAL "3": LET ECD=STB+VAL "6": LET DCD=STB+VAL "9": LET CPF=STB+VAL "12": LET INV=STB+VAL "15": LET TLN=STB+VAL "18":: LET WIP=STB+VAL "21": LET LAD=STB+VAL "26"
   20 LET menu=VAL "1": LET MV=VAL "11"
   30 BORDER C1: PAPER C1: INK C2 
   35 RANDOMIZE USR BTS
   40 LET L=USR TLN: IF NOT menu THEN GO TO VAL "100"
   50 GO SUB VAL "500"
  100 LET RET=VAL "110": GO TO VAL "400"
  110 IF K$="M" OR K$=CHR$ VAL "13" THEN LET MENU=NOT MENU: GO TO VAL "35"
  120 IF K$="L" THEN LET C$=" LOAD ": GO TO VAL "200"
  125 IF K$="Q" THEN CLEAR VAL "65368": PRINT AT VAL "21",VAL "10";" OK TO RUN ": STOP 
  130 IF K$="S" THEN LET C$=" SAVE ": GO TO VAL "300"
  135 IF K$="C" THEN RANDOMIZE USR BTS: RANDOMIZE USR CPF: GO TO VAL "40"
  140 IF K$="I" THEN RANDOMIZE USR INV: GO TO VAL "35"
  145 IF K$="E" THEN GO TO VAL "260"
  150 IF K$="D" THEN GO TO VAL "270"
  155 IF k$="W" THEN GO TO VAL "700"
  160 GO TO VAL "100"
  190 FOR I=VAL "0" TO VAL "300": NEXT I: BEEP VAL ".01",VAL "25": RETURN 
  200 INPUT "LOAD FILE OR SCREEN? "; LINE K$: LET RET=VAL "201": GO TO VAL "420"
  201 IF k$="F" THEN LET W$=" RLE FILE ": GO TO VAL "220"
  202 IF k$="S" THEN LET W$=" SCREEN ": GO TO VAL "240"
  203 GO TO VAL "35"
  220 GO SUB VAL "290"
  222 LOAD n$CODE 37000: RUN 
  240 GO SUB VAL "290"
  242 CLS : LOAD n$CODE VAL "16384"
  250 RANDOMIZE USR STB: RUN 
  260 PRINT FLASH 1;AT mv+VAL "7",VAL "1";" Allow 10 seconds "
  261 FOR i=VAL "0" TO VAL "250": NEXT i
  265 RANDOMIZE USR BTS: RANDOMIZE USR ECD: RUN 
  270 CLS : LET GOOD=USR DCD
  271 IF NOT GOOD THEN GO TO VAL "280"
  272 RANDOMIZE USR STB: RUN 
  280 PRINT FLASH VAL "1";AT mv+VAL "7",VAL "1";" INVALID RLE FILE ": FOR i=VAL "0" TO VAL "250": NEXT i: RUN 
  290 INPUT ("";C$;" ";W$;'"Filename: ");N$: IF LEN n$>VAL "10" THEN GO TO VAL "290"
  291 RETURN 
  300 INPUT "SAVE FILE, SCREEN or PROG? "; LINE K$: LET ret=VAL "301": GO TO VAL "420"
  301 IF K$="F" THEN LET W$=" RLE FILE ": GO TO VAL "320"
  302 IF K$="S" THEN LET W$=" SCREEN ": GO TO VAL "340"
  303 IF K$="P" THEN LET W$=" PROGRAM ": GO TO VAL "360"
  304 RUN 
  320 IF NOT L THEN GO TO VAL "280"
  322 GO SUB VAL "290": IF n$="" THEN RUN 
  324 SAVE N$CODE 37000,L: GO TO VAL "380"
  340 GO SUB VAL "290": IF n$="" THEN RUN 
  350 RANDOMIZE USR BTS: SAVE n$CODE VAL "30800",VAL "6144": GO TO VAL "380"
  360 GO SUB VAL "290": IF n$="" THEN RUN 
  364 SAVE N$ LINE VAL "900": BEEP VAL ".01",VAL "10": SAVE N$CODE VAL "30400",VAL "400"
  380 CLS : PRINT AT VAL "20",VAL "0";"VERIFY (Y/N) "; FLASH VAL "1";"?"
  381 IF INKEY$="" THEN GO TO VAL "381"
  382 IF INKEY$="y" OR INKEY$="Y" THEN GO TO VAL "390"
  383 IF INKEY$="n" OR INKEY$="N" THEN RUN 
  384 GO TO VAL "381"
  390 CLS : PRINT AT VAL "20",VAL "0";"REWIND/PLAY TO VERIFY ";N$
  392 IF K$="P" THEN VERIFY N$
  394 VERIFY N$CODE : RUN 
  400 LET K$=INKEY$: IF K$="" THEN GO TO VAL "400"
  405 BEEP VAL ".01",VAL "20"
  410 IF K$=INKEY$ THEN GO TO VAL "410"
  420 IF K$>"Z" THEN LET K$=CHR$ (CODE K$-VAL "32")
  430 GO TO RET
  500 PAPER C2: INK C1: PRINT AT MV,VAL "0";E$'" MENU  DECODE  COPY "'E$'" LOAD  ENCODE  WIPE "'E$'" SAVE  INVERT  QUIT "'E$'"     rle file:";L;TAB VAL "20"'E$'
  505 PLOT VAL "3",VAL "171"-MV*VAL "8": DRAW VAL "152",VAL "0": DRAW VAL "0",-VAL "64": DRAW -VAL "152",VAL "0": DRAW VAL "0",VAL "64"
  510 PAPER C1: INK C2: RETURN 
  700 INPUT "Wipe lines (1-192): "; LINE q$: IF q$="" THEN RUN 
  704 FOR i=VAL "1" TO LEN q$: IF q$(i)<"0" OR q$(i)>"9" THEN RUN 
  706 NEXT I: LET X=VAL Q$: IF X<VAL "1" OR X>VAL "192" THEN RUN 
  710 RANDOMIZE USR BTS: FOR B=VAL "2" TO VAL "0" STEP -VAL "1": FOR R=VAL "7" TO VAL "0" STEP -VAL "1": FOR S=VAL "7" TO VAL "0" STEP -VAL "1": LET A=VAL "16384"+(B*VAL "2048")+(S*VAL "256")+(R*VAL "32")
  720 POKE LAD+VAL "1",INT (A/VAL "256"): POKE LAD,A-VAL "256"*PEEK (LAD+VAL "1"): RANDOMIZE USR WIP
  730 LET X=X-VAL "1": IF X=VAL "0" THEN RANDOMIZE USR STB: GO TO VAL "40"
  740 NEXT S: NEXT R: NEXT B: RUN 
  900 LOAD N$CODE 
  910 RANDOMIZE USR VAL "30741": REM clear buffers
  920 RUN 

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

Scroll to Top