1 REM Ins{nd av Kristoffer Eriksson <5357>    1987-04-03 19.50.44 (KERMIT)
10 ! save AVCROSS,  1987-04-01 22.10
20 ! +---------------------------------------------------+
30 ! ! AVCROSS Ver 1.2 - Korsreferensprogram till AVASS  !
40 ! ! F|r ABC800-serien (dvs DBASIC-II)                 !
50 ! ! Startas av AVASS med CHAIN.                       !
60 ! ! Av Kristoffer Eriksson "SKE" ABC <5357>, 1984-1987!
70 ! ! F}r fritt kopieras f|r icke-kommersiella syften   !
80 ! +---------------------------------------------------+
90 ! OBS: Skrivarutskriften {r inst{lld f|r EPSON med smal stil. [ndra om du
100 ! inte har en EPSON-kompatibel skrivare, eller inte vill ha smal stil.
110 ! 
120 ! 
130 ! Ver-/-Datum----/-Sign-/-Kommentar-----
140 ! 1.0 / 84-11-02 / SKE  /
150 ! 1.2 / 87-03-28 / SKE  / Moderniserat, snabbare sortering, AVASS 5.1
160 ! 
170 ! 
180 INTEGER : EXTEND : ! NO RESUME
190 ; CHR$(12) "Korsreferenstabulering Ver 1.2 f|r AVASS ver 5.1" : ; 
200 ! 
210 DIM Dig$=16,Diglen$=34,Prfil$=16,S$=5,X$=5
220 Dig$="0123456789ABCDEF" : Diglen$="  008@6;48474736363635353535353524"
230 Basa=10 ! Talsystem f|r adresser
240 Prfil$="PR:VSA56"
250 DIM Prinit$=20 : Prinit$=CHR$(15) ! Kod f|r smal stil p} skrivare
260 DIM Prvmrg$=20 : Prvmarg$=SPACE$(10) ! Inleder varje rad
270 Prmaxk=11 ! Max kolumner a' 10 tecken p} skrivare, 11 f|r 132-teckens rader
280 ! 
290 Maxr=(SYS(4)-1500)/5
300 DIM Ref$=Maxr*5 ! H{r l{ses referensfilen in.
310 POKE VAROOT(Ref$)+4,Maxr*5,SWAP%(Maxr*5) ! S{tt l{ngd till max
320 ! 
330 ! 
340 ! --- \ppna adressfil --------------
350 ON ERROR GOTO 430 : OPEN "AVCROSS.TMP" AS FILE 2
360 GET #2 P$ COUNT 2
370 Basa=CVT$%(P$)
380 GET #2 F$ COUNT 16
390 IF F$=SPACE$(16) THEN F$="ABC-PROM/RAM"
400 ON ERROR GOTO 
410 ! 
420 WHILE 0
430   IF ERRCODE<>21 THEN ; "Felkod" ERRCODE "p} AVCROSS.TMP" : STOP 
440   ; "Kan inte hitta AVCROSS.TMP som skapas n{r man beg{r korsreferens i AVASS."
450   END 
460 WEND 
470 ! 
480 ! --- St{ll fr}gor -----------------
490 Basa=FNFr}gabas("Talsystem f|r adresser",Basa)
500 Jr=FNJnv{lj("Ska JR tas med","J")=1
510 Jrt=0
520 IF Jr Jrt=FNJnv{lj("Ska JR skrivas ut i en s{rskild tabell","J")=1 AND 1
530 Pr=FNJnv{lj("Utskrift p} skrivare","N")
540 IF Pr=1 THEN Fpr=1 : OPEN Prfil$ AS FILE Fpr : ; #Fpr Prinit$ : Maxk=Prmaxk
550 IF Pr=2 THEN Fpr=0 : Maxk=7
560 ! 
570 ! --- Bearbetningsloop -------------
580 Flgavbryt=0
590 Start=-1
600 Eof=0
610 POSIT #2,68
620 WHILE NOT Eof AND Flgavbryt<>-1
630   ; : ; "L{ser in ";
640   IF Start THEN ; "adress-filen..." ELSE ; "en omg}ng adresser till..."
650   Z=FNL{sin
660   ; "Sorterar" Ant "adresser..."
670   Z=FNQsort(1,Pos-5)
680   ; "     "
690   IF Start THEN Z=FNWr("Korsreferens f|r disassemblering av "+F$,1)
700   Z=FNSkrivlista
710   Start=0
720 WEND 
730 IF Flgavbryt=0 THEN ; "Klart."
740 CLOSE 
750 END 
760 ! 
770 ! 
780 ! --- L{s in adresser --------------
790 ! Adresserna lagras i Ref$ p} ett s{tt som till}ter sortering
800 ! med vanlig str{ngj{mf|relse. I filen inneh}ller varje post
810 ! Typ, Tilladress, Fr}nadress
820 ! F|r sorteringens skull {ndras det till: Tilladress, Fr}nadress, Typ
830 DEF FNL{sin
840   GET #2 S$ COUNT 5
850   Ant=0
860   Pos=1
870   WHILE ASCII(S$)<>115 AND Ant