DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦408158c12⟧ COMAL_SAVE

    Length: 5878 (0x16f6)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦7a8889172⟧ »/NGRF2« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "NGRF2"

 0010 PRINT "<27>AF"
 0020 LET AFBRYD = 1
 0030 ON ESC THEN EXEC OUTESC
 0040 ON ERR THEN EXEC OUTERR
 0050 EXEC START
 0060 EXEC KOVALG
 0070 EXEC GRAF
 0080 EXEC CHOICE
 0090 END «nul»
 0800 PROC MODEL
 0810   REM   MELLEM 800 OG 900«nul»
 0815   REM   SKRIVES DE FUNK-«nul»«nul»
 0820   REM   TIONER, DER 0NSKES«nul»E
 0825   REM   AFBILDET. DETTE SKER«nul»L
 0830   REM   AUTOMATISK UNDER«nul»K
 0835   REM   K0RSLEN.«nul»K
 0840   REM «nul» 
 0845   REM «nul» 
 0850   REM «nul» 
 0855   REM «nul» 
 0860   REM «nul» 
 0865   REM «nul» 
 0870   REM «nul» 
 0875   REM «nul» 
 0880   REM «nul» 
 0885   REM «nul» 
 0890   REM «nul» 
 0895   REM  «nul»
 0900 ENDPROC
 1000 PROC KOVALG
 1010   PRINT "<27><12>"
 1020   DELAY = 1
 1030   PRINT "HVIS DU 0NSKER KOORDINATSYSTEMET PAA H0JKANT, INDTAST 0."
 1040   PRINT "0NSKER DU VANDRET KOORDINATSYSTEM, INDTAST 1."
 1050   INPUT J
 1060   IF ( J <> 0 ) * ( J <> 1 ) THEN GOTO 1050
 1070   LET XOMS = 25 ; YOMS = 25
 1080   LET XMAX = 395 + J * 217 ; YMAX = 608 - J * 188
 1090   PRINT "ANF0R BEGYNDELSESPUNKTETS PLACERING PAA PAPI-"
 1100   PRINT "RET MAALT I CM VANDRET OG CM LODRET FRA NEDERSTE VENSTRE"
 1110   PRINT "HJ0ERNE."
 1120   INPUT "CM VANDRET " , XO , "     CM LODRET " , YO
 1130   DIM X1 ( NG ) , Y1 ( NG )
 1140   FOR IG = 1 TO NG
 1150     PRINT
 1160     PRINT " FOR GRAF" ; IG ; ":"
 1170     INPUT "1 CM PAA X-AKSEN SKAL SVARE TIL " , X1 ( IG )
 1180     INPUT "1 CM PAA Y-AKSEN SKAL SVARE TIL " , Y1 ( IG )
 1190     PRINT "HVIS DU 0NSKER AT RETTE I DETTE, INDTAST 0. ELLERS ET ANDET"
 1200     INPUT "TAL. " , R
 1210     IF R = 0 THEN GOTO 1160
 1220   NEXT 
 1230 ENDPROC
 1240 PROC GRAF
 1250   LET AFBRYD = 2
 1260   PRINT "<27><12>"
 1270   DELAY = 1
 1280   LET X0 = XOMS * XO ; Y0 = YOMS * YO
 1290   CALL "GRAPH" , X0 , 0
 1300   CALL "OUTVECT" , X0 , YMAX
 1310   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , YMAX - 4
 1320   CALL "OUTVECT" , X0 + 4 , YMAX - 4
 1330   CALL "OUTVECT" , X0 , YMAX
 1340   CALL "GRAPH" , 0 , Y0
 1350   CALL "OUTVECT" , XMAX , Y0
 1360   CALL "OUTVECT" , XMAX - 4 , Y0 + 4
 1370   CALL "OUTVECT" , XMAX - 4 , Y0 - 4 * ( Y0 >= 4 )
 1380   CALL "OUTVECT" , XMAX , Y0
 1390   FOR I = 1 TO 23 - 7 * J
 1400     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , I * YOMS
 1410     CALL "OUTVECT" , X0 + 2 , I * YOMS
 1420   NEXT 
 1430   FOR I = 1 TO 15 + 8 * J
 1440     CALL "GRAPH" , I * XOMS , Y0 - 2 * ( Y0 > 2 )
 1450     CALL "OUTVECT" , I * XOMS , Y0 + 2
 1460   NEXT 
 1470   FOR IG = 1 TO NG
 1480     OPEN FILE ( 0 , 1 ) "STOR2"
 1490     READ FILE ( 0 ) TSLUT
 1500     LET R = 1 ; VEC = 0
 1510     REPEAT 
 1520       READ FILE ( 0 ) T
 1530       FOR I = 1 TO N
 1540         READ FILE ( 0 ) X ( I ) , DX ( I )
 1550       NEXT 
 1560       EXEC MODEL
 1570       LET XG = X0 + XOMS * F1 ( IG ) / X1 ( IG )
 1580       LET YG = Y0 + YOMS * F2 ( IG ) / Y1 ( IG )
 1590       LET VEC = VEC * ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 0 ) * ( YG <= YMAX )
 1600       IF R = 1 THEN CALL "GRAPH" , XG , YG
 1610       CALL "VECTOR" , XG , YG , VEC
 1620       LET R = R + 1 ; VEC = ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 0 ) * ( YG <= YMAX )
 1630     UNTIL ( T >= TSLUT ) + ( AFBRYD = 3 )
 1640     CLOSE FILE ( 0 )
 1650   NEXT 
 1660   CALL "ALPHA"
 1670   CALL "GRAPH" , 0 , 780
 1680   CALL "ALPHA"
 1690   LET AFBRYD = 1
 1700 ENDPROC
 1710 PROC GRAFH
 1720   LET AFBRYD = 2
 1730   PRINT "<27><12>"
 1740   DELAY = 1
 1750   LET X0 = YO * XOMS ; Y0 = 783 - XO * YOMS
 1760   CALL "GRAPH" , X0 , 779
 1770   CALL "OUTVECT" , X0 , 779 - YMAX
 1780   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , 783 - YMAX
 1790   CALL "OUTVECT" , X0 + 4 , 783 - YMAX
 1800   CALL "OUTVECT" , X0 , 779 - YMAX
 1810   CALL "GRAPH" , 0 , Y0
 1820   CALL "OUTVECT" , XMAX , Y0
 1830   CALL "OUTVECT" , XMAX - 4 , Y0 + 4 * ( Y0 <= 775 )
 1840   CALL "OUTVECT" , XMAX - 4 , Y0 - 4
 1850   CALL "OUTVECT" , XMAX , Y0
 1860   FOR I = 1 TO 16
 1870     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , 783 - I * YOMS
 1880     CALL "OUTVECT" , X0 + 2 , 783 - I * YOMS
 1890   NEXT 
 1900   FOR I = 1 TO 23
 1910     CALL "GRAPH" , I * XOMS , Y0 - 2
 1920     CALL "OUTVECT" , I * XOMS , Y0 + 2 * ( Y0 <= 775 )
 1930   NEXT 
 1940   FOR IG = 1 TO NG
 1950     OPEN FILE ( 0 , 1 ) "STOR2"
 1960     READ FILE ( 0 ) TSLUT
 1970     LET R = 1 ; VEC = 0
 1980     REPEAT 
 1990       READ FILE ( 0 ) T
 2000       FOR I = 1 TO N
 2010         READ FILE ( 0 ) X ( I ) , DX ( I )
 2020       NEXT 
 2030       EXEC MODEL
 2040       LET XG = X0 + XOMS * F2 ( IG ) / Y1 ( IG )
 2050       LET YG = Y0 - YOMS * F1 ( IG ) / X1 ( IG )
 2060       LET VEC = VEC * ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 777 - YMAX ) * ( YG <= 777 )
 2070       IF R = 1 THEN CALL "GRAPH" , XG , YG
 2080       CALL "VECTOR" , XG , YG , VEC
 2090       LET R = R + 1 ; VEC = ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 777 - YMAX ) * ( YG <= 777 )
 2100     UNTIL ( T >= TSLUT ) + ( AFBRYD = 3 )
 2110     CLOSE FILE ( 0 )
 2120   NEXT 
 2130   CALL "ALPHA"
 2140   CALL "GRAPH" , 0 , 200
 2150   CALL "ALPHA"
 2160   LET AFBRYD = 1
 2170 ENDPROC
 2180 PROC CHOICE
 2190   PRINT "DU HAR F0LGENDE VALGMULIGHEDER (INDTAST TALLET):"
 2200   PRINT "1=GRAFEN TEGNES PAA PLOTTEREN"
 2210   PRINT "2=NYT KOORDINATSYSTEM MED SAMME FUNKTIONER"
 2220   PRINT "3=NYT KOORDINATSYSTEM MED ANDRE FUNKTIONER"
 2230   PRINT "4=TABEL"
 2240   PRINT "5=NY INTEGRATION MED DISSE ELLER ANDRE LIGNINGER"
 2250   PRINT "6=STOP"
 2260   INPUT Q
 2270   LET Q = INT ( Q )
 2280   IF ( Q < 1 ) + ( Q > 6 ) THEN GOTO 2260
 2290   IF Q = 1 THEN
 2300     LET XOMS = 41.8 ; YOMS = 43.5
 2310     LET XMAX = 1023 ; YMAX = 730
 2320     PRINT "<27>AE"
 2330     IF J THEN
 2340       EXEC GRAF
 2350     ELSE 
 2360       EXEC GRAFH
 2370     ENDIF 
 2380     PRINT "<27>AF"
 2390   ENDIF 
 2400   IF Q = 2 THEN
 2410     EXEC KOVALG
 2420     EXEC GRAF
 2430   ENDIF 
 2440   IF Q = 3 THEN CHAIN "NGRF2"
 2450   IF Q = 4 THEN CHAIN "NTAB2"
 2460   IF Q = 5 THEN CHAIN "NDIF2" THEN GOTO 0300
 2470   IF Q <> 6 THEN GOTO 2190
 2480 ENDPROC
 2490 PROC START
 2500   DIM Q$ ( 150 )
 2510   PRINT "<27><12>"
 2520   DELAY = 1
 2530   OPEN FILE ( 0 , 1 ) "DIM2"
 2540   READ FILE ( 0 ) N , M
 2550   CLOSE FILE ( 0 )
 2560   PRINT "VED DEN GRAFISKE AFBILDNING, KAN DU I DET F0LGENDE BENYTTE AL-"
 2570   PRINT "LE FUNKTIONERNE X(1),...,X(N),DX(1),...,DX(N),T OG KOMBINATIO-"
 2580   PRINT "NER AF DISSE."
 2590   PRINT
 2600   DIM X ( N ) , DX ( N )
 2610   PRINT "HVOR MANGE GRAFER 0NSKES TEGNET (I SAMME KOORDINATSYSTEM)?"
 2620   INPUT "INDTAST ANTALLET. " , NG
 2630   LET NG = INT ( NG )
 2640   IF NG > 10 THEN GOTO 2620
 2650   DIM F1$ ( NG , 150 ) , F2$ ( NG , 150 ) , F1 ( NG ) , F2 ( NG )
 2660   FOR I = 1 TO NG
 2670     PRINT
 2680     PRINT "GRAF " ; I
 2690     INPUT "PAA X-AKSEN 0NSKES (FUNKTION):" , F1$ ( I )
 2700     INPUT "PAA Y-AKSEN 0NSKES (FUNKTION):" , F2$ ( I )
 2710     PRINT "HVIS DU 0NSKER AT RETTE I DETTE, INDTAST 0. ELLERS ET ANDET"
 2720     INPUT "TAL. " , R
 2730     IF R = 0 THEN GOTO 2680
 2740   NEXT 
 2750   DIM LNUM$ ( 3 ) , I$ ( 2 )
 2760   LET AFBRYD = 0
 2770   CREATE "GRF" , 1
 2780   OPEN FILE ( 0 , 3 ) "GRF"
 2790   RESTORE 0000
 2800   FOR I = 1 TO NG
 2810     READ LNUM$ , I$
 2820     WRITE FILE ( 0 ) LNUM$ , "LET F1(" , I$ , ")=" , F1$ ( I ) , "<13><10>"
 2830     READ LNUM$
 2840     WRITE FILE ( 0 ) LNUM$ , "LET F2(" , I$ , ")=" , F2$ ( I ) , "<13><10>"
 2850   NEXT 
 2860   CLOSE FILE ( 0 )
 2870   ENTER "GRF"
 2880   DELETE "GRF"
 2890   IF SYS ( 7 ) = 2 THEN STOP «nul» 
 2900   LET AFBRYD = 1
 2910   DATA "810" , "1" , "815" , "820" , "2" , "825" , "830" , "3" , "835" , "840" , "4" , "845"
 2920   DATA "850" , "5" , "855" , "860" , "6" , "865" , "870" , "7" , "875" , "880" , "8" , "885"
 2930   DATA "890" , "9" , "895"
 2940 ENDPROC
 2950 PROC OUTESC
 2960   ON ESC THEN EXEC OUTESC
 2970   IF AFBRYD = 1 THEN
 2980     PRINT
 2990     PRINT "PROGRAMMET AFBRUDT."
 3000     END «nul»
 3010   ENDIF 
 3020   IF AFBRYD = 2 THEN LET AFBRYD = 3
 3030 ENDPROC
 3040 PROC OUTERR
 3050   CLOSE
 3060   CALL "ALPHA"
 3070   CALL "GRAPH" , 0 , 780
 3080   CALL "ALPHA"
 3090   PRINT
 3100   IF ( SYS ( 7 ) = 16 ) + ( SYS ( 7 ) = 34 ) THEN
 3110     PRINT "DER ER OPSTAAET FEJL. DE BENYTTEDE FUNKTIONER ER IKKE OVER-"
 3120     PRINT "ALT VELDEFINEREDE. START FORFRA."
 3130   ENDIF 
 3140   IF ( SYS ( 7 ) = 17 ) + ( SYS ( 7 ) = 31 ) + ( SYS ( 7 ) = 38 ) THEN
 3150     PRINT "DER ER BENYTTET ET ELLER FLERE FORKERTE UDTRYK I FUNKTIONER-"
 3160     PRINT "NE. START FORFRA."
 3170   ENDIF 
 3180   PRINT
 3190   PRINT "FEJLKODE " ; SYS ( 7 ) ; ". SE MANUAL FOR YDERLIGERE OPLYSNINGER."
 3200   END «nul»	
 3210 ENDPROC

UDAS Segment

    FNA definition = 0xffff
    FNB definition = 0xffff
    FNC definition = 0xffff
    FND definition = 0xffff
    FNE definition = 0xffff
    FNF definition = 0xffff
    FNG definition = 0xffff
    FNH definition = 0xffff
    FNI definition = 0xffff
    FNJ definition = 0xffff
    FNK definition = 0xffff
    FNL definition = 0xffff
    FNM definition = 0xffff
    FNN definition = 0xffff
    FNO definition = 0xffff
    FNP definition = 0xffff
    FNQ definition = 0xffff
    FNR definition = 0xffff
    FNS definition = 0xffff
    FNT definition = 0xffff
    FNU definition = 0xffff
    FNV definition = 0xffff
    FNW definition = 0xffff
    FNX definition = 0xffff
    FNY definition = 0xffff
    FNZ definition = 0xffff
    FN[ definition = 0xffff
    FN\ definition = 0xffff
    FN] definition = 0xffff
    GOSUB-RETURN stack pointer = 0x0000
      stack[0] = 0x0000
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
      Var# = 0x0000
      Loop Top = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 0   (0x00000000)
    REPEAT-UNTIL stack pointer = 0x0000
      stack[0] = 0x0000
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    WHILE-ENDWHILE stack pointer = 0x0000
      stack[0] = 0x0000
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    IF-ELSE stack pointer = 0x0000
      stack[0] = 0x0000
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
Variables:
    0x80 0x0000 0x00 
    0x81 0xffff 0x00 AFBRYD
    0x82 0xffff 0x00 OUTESC
    0x83 0xffff 0x00 OUTERR
    0x84 0xffff 0x00 START
    0x85 0xffff 0x00 KOVALG
    0x86 0xffff 0x00 GRAF
    0x87 0xffff 0x00 CHOICE
    0x88 0xffff 0x00 MODEL
    0x89 0xffff 0x00 J
    0x8a 0xffff 0x00 XOMS
    0x8b 0xffff 0x00 YOMS
    0x8c 0xffff 0x00 XMAX
    0x8d 0xffff 0x00 YMAX
    0x8e 0xffff 0x00 XO
    0x8f 0xffff 0x00 YO
    0x90 0xffff 0x00 X1
    0x91 0xffff 0x00 NG
    0x92 0xffff 0x00 Y1
    0x93 0xffff 0x00 IG
    0x94 0xffff 0x00 R
    0x95 0xffff 0x00 X0
    0x96 0xffff 0x00 Y0
    0x97 0xffff 0x00 I
    0x98 0xffff 0x00 TSLUT
    0x99 0xffff 0x00 VEC
    0x9a 0xffff 0x00 T
    0x9b 0xffff 0x00 N
    0x9c 0xffff 0x00 X
    0x9d 0xffff 0x00 DX
    0x9e 0xffff 0x00 XG
    0x9f 0xffff 0x00 F1
    0xa0 0xffff 0x00 YG
    0xa1 0xffff 0x00 F2
    0xa2 0xffff 0x00 GRAFH
    0xa3 0xffff 0x00 Q
    0xa4 0xffff 0x02 Q$
    0xa5 0xffff 0x00 M
    0xa6 0xffff 0x02 F1$
    0xa7 0xffff 0x02 F2$
    0xa8 0xffff 0x02 LNUM$
    0xa9 0xffff 0x02 I$
    0xaa 0xffff 0x00 LIAT
    0xab 0xffff 0x00 FEJL
    0xac 0xffff 0x00 FEJL0
    0xad 0xffff 0x00 LIST2850

Wrapper

.magic = 0x4e32
.u_pas = 0x0a1e  // Length of UPAS in words
.u_das = 0x014e  // Length of UDAS in words
.u_dvs = 0x014e  // Start på savede variabel indhold (word adr)
.u_nds = 0x0000  // Address på næste prog.sætning (word adr)
.u_cps = 0x0000  // Address på curr prog.sætning (word adr)
.u_tll = 0x0048  // Page størrelse
.u_tts = 0x000e  // TAP størrelse
.u_ran = 0x0001  // Random tal
.u_cdl = 0x0006  // Current DATA sætning ptr
.u_cdb = 0x0000  // Current DATA byte ptr
.u_esa = 0x0042  // ON ESE (word adr)
.u_era = 0x0000  // ON ERR (word adr)
.u_cas = 0xffff  // CASE dybde
.u_las = 0xffff  // last (-1)