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

⟦8920f4c92⟧ COMAL_SAVE

    Length: 5060 (0x13c4)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦0ed7eb268⟧ »/NGRAF« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "NGRAF"

 0010 EXEC START
 0230 EXEC KOVALG
 0240 EXEC GRAF
 0250 EXEC CHOICE
 0800 PROC MODEL
 0810   REM «nul»
 0815   REM «nul»
 0820   REM «nul»
 0825   REM «nul»
 0830   REM «nul»
 0835   REM «nul»
 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   REM «nul»«nul»
 0905   REM «nul»«nul»
 0910 ENDPROC
 1000 PROC KOVALG
 1010   PRINT "<27><12>"
 1020   DELAY = 1
 1030   INPUT "HOEJKANT SKRIV 0,VANDRET SKRIV 1" , J
 1040   LET XOMS = 25 ; YOMS = 25
 1050   LET XMAX = 395 + J * 217 ; YMAX = 608 - J * 188
 1060   PRINT "ANF0R BEGYNDELSESPUNKTETS PLACERING PAA PAPI-"
 1070   PRINT "RET MAALT I CM VANDRET OG CM LODRET FRA NEDERSTE VENSTRE"
 1080   PRINT "HJ0ERNE."
 1090   INPUT "CM VANDRET " , XO , "     CM LODRET " , YO
 1092   DIM X1 ( NG ) , Y1 ( NG )
 1094   FOR IG = 1 TO NG
 1095     PRINT " FOR GRAF" ; IG ; ":"
 1096     INPUT "1 CM PAA X-AKSEN SKAL SVARE TIL " , X1 ( IG )
 1100     INPUT "1 CM PAA Y-AKSEN SKAL SVARE TIL " , Y1 ( IG )
 1105   NEXT 
 1120 ENDPROC
 1130 PROC GRAF
 1140   PRINT "<27><12>"
 1150   DELAY = 1
 1160   LET X0 = XOMS * XO ; Y0 = YOMS * YO
 1170   CALL "GRAPH" , X0 , 0
 1180   CALL "OUTVECT" , X0 , YMAX
 1190   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , YMAX - 4
 1200   CALL "OUTVECT" , X0 + 4 , YMAX - 4
 1210   CALL "OUTVECT" , X0 , YMAX
 1220   CALL "GRAPH" , 0 , Y0
 1230   CALL "OUTVECT" , XMAX , Y0
 1240   CALL "OUTVECT" , XMAX - 4 , Y0 + 4
 1250   CALL "OUTVECT" , XMAX - 4 , Y0 - 4 * ( Y0 >= 4 )
 1260   CALL "OUTVECT" , XMAX , Y0
 1270   FOR I = 1 TO 23 - 7 * J
 1280     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , I * YOMS
 1290     CALL "OUTVECT" , X0 + 2 , I * YOMS
 1300   NEXT 
 1310   FOR I = 1 TO 15 + 8 * J
 1320     CALL "GRAPH" , I * XOMS , Y0 - 2 * ( Y0 > 2 )
 1330     CALL "OUTVECT" , I * XOMS , Y0 + 2
 1340   NEXT 
 1342   FOR IG = 1 TO NG
 1345     OPEN FILE ( 0 , 1 ) "STORE"
 1346     READ FILE ( 0 ) TSLUT
 1348     LET R = 1 ; VEC = 0
 1349     REPEAT 
 1351       FOR I = 1 TO N
 1352         READ FILE ( 0 ) X ( I ) , DX ( I )
 1354       NEXT 
 1355       READ FILE ( 0 ) T
 1358       EXEC MODEL
 1360       LET XG = X0 + XOMS * F1 ( IG ) / X1 ( IG )
 1370       LET YG = Y0 + YOMS * F2 ( IG ) / Y1 ( IG )
 1380       LET VEC = VEC * ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 0 ) * ( YG <= YMAX )
 1385       IF R = 1 THEN CALL "GRAPH" , XG , YG
 1390       CALL "VECTOR" , XG , YG , VEC
 1400       LET R = R + 1 ; VEC = ( XG >= 0 ) * ( XG <= XMAX ) * ( YG >= 0 ) * ( YG <= YMAX )
 1410     UNTIL T >= TSLUT
 1415     CLOSE FILE ( 0 )
 1420   NEXT 
 1440   CALL "ALPHA"
 1560   CALL "GRAPH" , 0 , 780
 1570   CALL "ALPHA"
 1580 ENDPROC
 1590 PROC GRAFH
 1600   PRINT "<27><12>"
 1610   DELAY = 1
 1620   LET X0 = YO * XOMS ; Y0 = 783 - XO * YOMS
 1630   CALL "GRAPH" , X0 , 779
 1640   CALL "OUTVECT" , X0 , 779 - YMAX
 1650   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , 783 - YMAX
 1660   CALL "OUTVECT" , X0 + 4 , 783 - YMAX
 1670   CALL "OUTVECT" , X0 , 779 - YMAX
 1680   CALL "GRAPH" , 0 , Y0
 1690   CALL "OUTVECT" , XMAX , Y0
 1700   CALL "OUTVECT" , XMAX - 4 , Y0 + 4 * ( Y0 <= 775 )
 1710   CALL "OUTVECT" , XMAX - 4 , Y0 - 4
 1720   CALL "OUTVECT" , XMAX , Y0
 1730   FOR I = 1 TO 16
 1740     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , 783 - I * YOMS
 1750     CALL "OUTVECT" , X0 + 2 , 783 - I * YOMS
 1760   NEXT 
 1770   FOR I = 1 TO 23
 1780     CALL "GRAPH" , I * XOMS , Y0 - 2
 1790     CALL "OUTVECT" , I * XOMS , Y0 + 2 * ( Y0 <= 775 )
 1800   NEXT 
 1810   FOR I = 1 TO N
 1820     LET X = X0 + XOMS * KO ( 2 , I ) / Y1
 1830     LET Y = Y0 - YOMS * KO ( 1 , I ) / X1
 1840     IF ( X < 2 ) + ( X > 1021 ) + ( Y > 777 ) + ( Y < 777 - YMAX ) THEN GOTO 1890
 1850     CALL "GRAPH" , X - 2 , Y + 2
 1860     CALL "OUTVECT" , X + 2 , Y - 2
 1870     CALL "OUTVECT" , X - 2 , Y - 2
 1880     CALL "OUTVECT" , X + 2 , Y + 2
 1890   NEXT 
 1900   LET XSTARTH = YSTART * XOMS / 25 ; YSTARTH = 783 - XSTART * YOMS / 25
 1910   LET XSLUTH = YSLUT * XOMS / 25 ; YSLUTH = 783 - XSLUT * YOMS / 25
 1920   IF YSTARTH > 779 THEN
 1930     LET YSTARTH = 779
 1940     LET XSTARTH = ( YSTART + 100 * P * X1 / Y1 / YOMS ) * XOMS / 25
 1950   ENDIF 
 1960   IF YSLUTH > 779 THEN
 1970     LET YSLUTH = 779
 1980     LET XSLUTH = ( YSLUT + 100 * P * X1 / Y1 / YOMS ) * XOMS / 25
 1990   ENDIF 
 2000   CALL "GRAPH" , XSTARTH , YSTARTH
 2010   CALL "OUTVECT" , XSLUTH , YSLUTH
 2020   CALL "GRAPH" , 0 , 765
 2030   CALL "ALPHA"
 2040 ENDPROC
 2050 PROC RETTE
 2060   PRINT "HVIS ET TAELSAET SKAL RETTES, INDTAST DETS NR. ELLERS INDTAST 0"
 2070   INPUT I
 2080   IF I = 0 THEN GOTO 2170
 2090   ON ERR THEN EXEC OUTERR
 2100   PRINT "TAELSAET NR " , I ;
 2110   INPUT "    X=" , KO ( 1 , I ) , "    Y=" , KO ( 2 , I )
 2120   GOTO 2060
 2130   PROC OUTERR
 2140     PRINT
 2150     PRINT "FORKERT NUMMERANGIVELSE!"
 2160   ENDPROC
 2170 ENDPROC
 2180 PROC CHOICE
 2190   PRINT "DU HAR F0LGENDE VALGMULIGHEDER (INDTAST TALLET):"
 2195   PRINT "1=GRAFEN TEGNES PAA PLOTTEREN"
 2200   PRINT "2=NYT KOORDINATSYSTEM MED SAMME FUNKTIONER"
 2205   PRINT "3=NYT KOORDINATSYSTEM MED ANDRE FUNKTIONER"
 2210   PRINT "4=TABEL"
 2215   PRINT "5=NY INTEGRATION MED DISSE ELLER ANDRE LIGNINGER"
 2225   INPUT Q
 2227   LET Q = INT ( Q )
 2229   IF ( Q < 1 ) + ( Q > 5 ) THEN GOTO 2225
 2235   IF Q = 1 THEN
 2260     LET XOMS = 41.8 ; YOMS = 43.5
 2270     LET XMAX = 1023 ; YMAX = 730
 2280     PRINT "<27>AE"
 2290     IF J THEN
 2300       EXEC GRAF
 2310     ELSE 
 2320       EXEC GRAFH
 2330     ENDIF 
 2340     PRINT "<27>AF"
 2360   ENDIF 
 2370   IF Q = 2 THEN
 2380     EXEC KOVALG
 2390     EXEC GRAF
 2410   ENDIF 
 2415   IF Q = 3 THEN CHAIN "NGRAF"
 2420   IF Q = 4 THEN CHAIN "NTAB"
 2425   IF Q = 5 THEN CHAIN "NDIF2"
 2428   GOTO 2190
 2430 ENDPROC
 2790 PROC START
 2800   DIM Q$ ( 150 )
 2810   PRINT "<27><12>"
 2820   DELAY = 1
 2830   OPEN FILE ( 0 , 1 ) "DIM"
 2840   READ FILE ( 0 ) N , M
 2850   CLOSE FILE ( 0 )
 2860   DIM X ( N ) , DX ( N )
 2870   PRINT "HVOR MANGE GRAFER 0NSKES TEGNET (I SAMME KOORDINATSYSTEM)?"
 2880   INPUT "INDTAST ANTALLET. " , NG
 2890   LET NG = INT ( NG )
 2900   IF NG > 10 THEN GOTO 2880
 2910   DIM F1$ ( NG , 150 ) , F2$ ( NG , 150 ) , F1 ( NG ) , F2 ( NG )
 3010   FOR I = 1 TO NG
 3020     PRINT "GRAF " ; I
 3030     INPUT "PAA X-AKSEN 0NSKES (FUNKTION):" , F1$ ( I )
 3040     INPUT "PAA Y-AKSEN 0NSKES (FUNKTION):" , F2$ ( I )
 3050   NEXT 
 3060   PRINT "HVIS DU 0NSKER AT RETTE, INDTAST 0. ELLERS ET ANDET TAL."
 3070   INPUT Q
 3080   IF Q = 0 THEN EXEC RETTE
 3090   DIM LNUM$ ( 3 ) , I$ ( 2 )
 3500   CREATE "GRF" , 1
 3510   OPEN FILE ( 0 , 3 ) "GRF"
 3530   RESTORE 0000
 3540   FOR I = 1 TO NG
 3550     READ LNUM$ , I$
 3560     WRITE FILE ( 0 ) LNUM$ , "LET F1(" , I$ , ")=" , F1$ ( I ) , "<13><10>"
 3570     READ LNUM$
 3580     WRITE FILE ( 0 ) LNUM$ , "LET F2(" , I$ , ")=" , F2$ ( I ) , "<13><10>"
 3590   NEXT 
 3600   CLOSE FILE ( 0 )
 3610   ENTER "GRF"
 3620   DELETE "GRF"
 4010   DATA "810" , "1" , "815" , "820" , "2" , "825" , "830" , "3" , "835" , "840" , "4" , "845"
 4020   DATA "850" , "5" , "855" , "860" , "6" , "865" , "870" , "7" , "875" , "880" , "8" , "885"
 4050 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 START
    0x82 0xffff 0x00 KOVALG
    0x83 0xffff 0x00 GRAF
    0x84 0xffff 0x00 CHOICE
    0x85 0xffff 0x00 MODEL
    0x86 0xffff 0x00 J
    0x87 0xffff 0x00 XOMS
    0x88 0xffff 0x00 YOMS
    0x89 0xffff 0x00 XMAX
    0x8a 0xffff 0x00 YMAX
    0x8b 0xffff 0x00 XO
    0x8c 0xffff 0x00 YO
    0x8d 0xffff 0x00 X1
    0x8e 0xffff 0x00 Y1
    0x8f 0xffff 0x00 X0
    0x90 0xffff 0x00 Y0
    0x91 0xffff 0x00 I
    0x92 0xffff 0x00 IG
    0x93 0xffff 0x00 NG
    0x94 0xffff 0x00 TSLUT
    0x95 0xffff 0x00 R
    0x96 0xffff 0x00 VEC
    0x97 0xffff 0x00 N
    0x98 0xffff 0x00 X
    0x99 0xffff 0x00 DX
    0x9a 0xffff 0x00 T
    0x9b 0xffff 0x00 XG
    0x9c 0xffff 0x00 F1
    0x9d 0xffff 0x00 YG
    0x9e 0xffff 0x00 F2
    0x9f 0xffff 0x00 GRAFH
    0xa0 0xffff 0x00 KO
    0xa1 0xffff 0x00 Y
    0xa2 0xffff 0x00 XSTARTH
    0xa3 0xffff 0x00 YSTART
    0xa4 0xffff 0x00 YSTARTH
    0xa5 0xffff 0x00 XSTART
    0xa6 0xffff 0x00 XSLUTH
    0xa7 0xffff 0x00 YSLUT
    0xa8 0xffff 0x00 YSLUTH
    0xa9 0xffff 0x00 XSLUT
    0xaa 0xffff 0x00 P
    0xab 0xffff 0x00 RETTE
    0xac 0xffff 0x00 OUTERR
    0xad 0xffff 0x02 Q$
    0xae 0xffff 0x00 M
    0xaf 0xffff 0x00 H
    0xb0 0xffff 0x02 F1$
    0xb1 0xffff 0x02 F2$
    0xb2 0xffff 0x00 Q
    0xb3 0xffff 0x02 LNUM$
    0xb4 0xffff 0x02 I$
    0xb5 0xffff 0x00 X0M
    0xb6 0xffff 0x00 GOTO2190

Wrapper

.magic = 0x4e32
.u_pas = 0x0858  // Length of UPAS in words
.u_das = 0x017b  // Length of UDAS in words
.u_dvs = 0x017b  // 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)