10 REM LIST- QAD.BAS 20 REM Uppdaterad 881107 30 REM 40 REM Copyright (C) Lars-]ke Johansson 50 REM , 1988 V[STER]S 60 REM , John-Erik N{slund 70 REM , 1988 STOCKHOLM 80 REM +------------------------------ 90 REM ! Beskrivning 100 REM 110 REM Quick Access Disc 120 REM ================= 130 REM 140 REM Denna fria version av QAD 150 REM kan anv{ndas f|r att lagra 160 REM filer i prim{rminnet 170 REM 180 REM Har du bara kasettbandare s} blir 190 REM detta ett litet lyft 200 REM Du m}ste dock ha 32 KB minne 210 REM 220 REM QADens b|rjan s{tts av 230 REM adress 32769 till 201*256 240 REM 250 REM Du b|r max anv{nda 14 filer 260 REM i denna mini version. 270 REM 280 REM Det finns {ven en proffsversion 290 REM som anv{nder ett externt 128 KB 300 REM RAM-kort. 310 REM Vi tar 600 kr f|r 128 KB kortet 320 REM -------------------------- 330 REM Du {r alltid v{lkommen att 340 REM st{lla fr}gor om det {r n}got 350 REM som {r oklart 360 REM 08/7196198 dagtid J-E N{slund 370 REM +------------------------------ 380 REM BOFA=187,135 =34747 390 REM 400 REM 34708=201 i Ver 7.1 410 REM ;CALL(B,startadress) 420 REM ;CALL(B+3,l{ngd p} discen i byte) 430 REM ;CALL(B+6,1 Ger QAD som f|rsta enheten i enhetslistan om du har flexskiva) 440 REM ;CALL(B+15,1 Frist{ller DOS-buffertar om du bara har kassett) 450 Z=INP(7) 460 REM Z=INP(3) 470 B=32770 : REM Startadress f|r drivrutinen 480 Q=PEEK(32769)*256 : REM QAD data b|rjar h{r 490 Q9=Q+256+12 500 REM +++++++++ HUVUD ++++++++++++++ 510 ; CHR$(12); 520 ; STRING$(PEEK(590)-1,ASC("=")) 530 ; TAB(7)"Quick Access Disc (QAD)" 540 ; STRING$(PEEK(590)-1,ASC("=")) 550 ; "Lars-]ke Johansson / John-Erik N{slund" 560 ; STRING$(PEEK(590)-1,ASC("-")) 570 ; 580 ; "Detta program initierar en mycket snabb" 590 ; "RAM-disk i ditt normala RAM-minne" 600 ; 610 ; "Du kan lagra flera filer som anropas" 620 ; "precis som du anropar filer mot DR0:" 630 ; 640 ; 650 ; "Anrop fr}n BASIC:" 660 ; 670 ; "RUN L: ger fillista" 680 ; "RUN DR7: startar ett prog" 690 ; 700 IF PEEK(B)=195 AND PEEK(B+1938)=201 THEN GOTO 760 710 ; CHR$(7)"Hoppsan! Koden {r EJ inskriven i minnet" 720 ; "Jag g|r RUN QADBAS.KOD"; : FOR I=0 TO 3000 : NEXT I 730 CHAIN "QADBAS.KOD" 740 ; 750 REM ******************************** 760 REM **** Testa Status hos QAD ****** 770 REM ******************************** 780 IF PEEK(65034)<>171 THEN ; " OBS! ";CHR$(10,13,7)"QAD ej f|rsta enhet i enhetslistan" 790 IF PEEK(65064)=251 OR PEEK(24576)=255 THEN POKE 65064,245 : \=CALL(B+15,1) : REM Skapa DOS-buffertar 800 IF PEEK(65064)*256<>Q OR PEEK(Q)<>255 OR PEEK(Q+1)<>255 F=1 810 IF F=0 S=PEEK(Q9)+1 : ; "QAD {r formaterad till"S-2" block" 820 IF F ; "QAD {r oformaterad" : IF S=0 S=PEEK(65064)-Q/256 830 ; 840 ; "Vill du {ndra n}got i QAD (J)"; 850 GOSUB 1400 860 GOSUB 1540 : REM ------- SK[RM RENSNING ------- 870 REM 880 IF F GOTO 1180 890 ; ,"QAD version"CALL(B,Q)/100 900 REM 910 REM Kolla om man m}ste formatera  920 IF PEEK(65064)*256<>Q ; "Dags att formatera" : S=(PEEK(65064)-Q/256) ELSE ; "Formaterad" : S0=PEEK(Q9)+1 930 REM QADs storlek h{mtas fr}n slutblocket 940 ; 950 ; "Anv{ndbar area"; 960 ; S-2" block" 970 ; 980 REM 990 REM ************ QAD LIB *********** 1000 ONERRORGOTO 1030 : ; "RUN L:" : ; 1010 OPEN "L:" ASFILE 1 1020 INPUTLINE #1,A$ : ; A$; : GOTO 1020 1030 CLOSE 1 1040 IF N THEN END 1050 ; "ABC80" 1060 ; 1070 S=S0 1080 GOSUB 1480 1090 ; "Vill du formatera den 'RENSA' (N) "; 1100 GOSUB 1400 : IF J THEN ; ELSE GOTO 1280 1110 ; "Vill du {ndra storlek (N)"; 1120 GOSUB 1400 1130 IF J ; "V{lj antal anv{ndbara block 1-64"; : INPUT S : S=S+2 : IF S<>S0 THEN Q=Q+S0*256-S*256 1140 REM NY QAD adress 1150 IF S<3 ; "F|r liten storlek" : ; "2 block g}r }t till Bibliotek och slutblock " : STOP 1160 REM 1170 REM  1180 REM  INIT och FORMAT  1190 REM  1200 IF Q-1500<=PEEK(65057)*256 ; " S} stor RAM-disk kan du inte ha!" : END 1210 GOSUB 1540 : REM SK[RM RENSNING 1220 ; "QAD Version"; 1230 REM FOR I=0 TO 4000 : NEXT I : REMF|r test 1240 Z=CALL(B,Q) : Z=CALL(B+3,S*256) : POKE 65063,Q,SWAP%(Q) : POKE 32769,Q/256 : REM S{nk TAKET 1250 ; Z/100 1260 ; 1270 ; "Din RAM-disk {r nu" : ; TAB(8)S-2" block ="(S-2)*252" tecken stor" 1280 ; 1290 GOSUB 1480 1300 ; 'Vill du ha QAD som f|rsta enhet (J) '; 1310 GOSUB 1400 : IF J OR G$=CHR$(13) THEN D=1 ELSE D=0 1320 IF PEEK(24576)=255 IF D POKE 34740,32,32,32 : ; : ; "DR7: default" ELSE POKE 34740,ASC("D"),ASC("R"),ASC("7") 1330 IF PEEK(24576)=195 Z=CALL(B+6,D) : ; : IF D ; : ; 'QAD {r nu "default"' 1340 ; 1350 ; "Skriv RUN L:" 1360 END 1370 REM Nu {r det bara att spara filer i QAD med SAVE L : FIL.BAC 1380 CHAIN "" 1390 REM ######### SUB rutiner ######### 1400 REM Testa inmatningen 1410 REM JN och RETURN sl{pps igenom 1420 J=0 : N=0 1430 GET G$ 1440 IF G$="J" OR G$="j" THEN J= NOT (J) : ; "J" : RETURN 1450 IF G$="N" OR G$="n" THEN N= NOT (N) : ; "N" : RETURN 1460 IF G$<>CHR$(13) GOTO 1400 ELSE ; CHR$(13); 1470 RETURN 1480 REM ========== PEKARE ======== 1490 ; " BOFA EOFA HEAP STACK" 1500 ; PEEK(65052)+PEEK(65053)*256;PEEK(65054)+PEEK(65055)*256; 1510 ; PEEK(65056)+PEEK(65057)*256;PEEK(65063)+PEEK(65064)*256 1520 ; 1530 RETURN 1540 FOR I=3 TO 22 : ; CUR(I,0)SPACE$(PEEK(590)); : NEXT I : ; CUR(2,0) : RETURN