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

⟦30f202775⟧ COMAL_SAVE

    Length: 5728 (0x1660)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦95b7abb42⟧ »/REGR2« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "REGR2"

 0020 PRINT "<27>AF"
 0030 PRINT "<27><12>"
 0040 DELAY = 1
 0050 PRINT
 0060 PRINT "      BEDSTE RETTE LINIE"
 0070 INPUT "ANTAL MAALEPUNKTER =" , N
 0080 DIM KO ( 2 , N )
 0090 LET SUMX = 0
 0100 LET SUMY = 0
 0110 LET SUMXY = 0
 0120 LET SUMX2 = 0
 0130 FOR I = 1 TO N STEP 1
 0140   PRINT "TALSAET NR " ; I ;
 0150   INPUT "    X=" , KO ( 1 , I ) , "    Y=" , KO ( 2 , I )
 0160 NEXT 
 0170 EXEC RETTE
 0180 FOR I = 1 TO N STEP 1
 0190   LET SUMX = SUMX + KO ( 1 , I )
 0200   LET SUMY = SUMY + KO ( 2 , I )
 0210   LET SUMXY = SUMXY + KO ( 1 , I ) * KO ( 2 , I )
 0220   LET SUMX2 = SUMX2 + KO ( 1 , I ) ^ 2
 0230 NEXT 
 0240 LET EX = SUMX / N
 0250 LET EY = SUMY / N
 0260 LET EXY = SUMXY / N
 0270 LET EX2 = SUMX2 / N
 0280 LET VARX = EX2 - EX ^ 2
 0290 IF VARX = 0 THEN
 0300   LET P = ( KO ( 2 , N ) - KO ( 2 , 1 ) ) / ( KO ( 1 , 1 ) - KO ( 1 , N ) )
 0310   LET Q = KO ( 2 , 1 ) - P * KO ( 1 , 1 )
 0320 ELSE 
 0330   LET P = ( EXY - EX * EY ) / VARX
 0340   LET Q = ( EX2 * EY - EX * EXY ) / VARX
 0350 ENDIF 
 0362 PRINT "HAELDNINGSKOEFFICIENTEN=" ; P
 0364 PRINT "SKAERING MED Y-AKSEN=" ; Q
 0371 LET SUMU1 = 0
 0372 LET SUMU2 = 0
 0373 FOR I = 1 TO N STEP 1
 0374   LET SUMU1 = SUMU1 + ( KO ( 2 , I ) - P * KO ( 1 , I ) - Q ) ^ 2
 0375   LET SUMU2 = SUMU2 + ( KO ( 1 , I ) - EX ) ^ 2
 0376 NEXT 
 0377 LET USP = SQR ( SUMU1 / ( N - 2 ) ) / SQR ( SUMU2 )
 0378 PRINT "USIKKERHEDEN PAA HAELDNINGSKOEFF. ER=" ; USP
 0379 LET USP = SQR ( SUMU1 / ( N - 2 ) ) / SQR ( N )
 0380 PRINT "USIKKERHEDEN PAA SKAERINGSP. MED Y-AKSEN ER =" ; USP
 0385 DELAY = 30
 0390 EXEC KOVALG
 0400 EXEC GRAF
 0410 EXEC CHOICE
 0420 PROC KOVALG
 0430   PRINT "<27><12>"
 0440   DELAY = 1
 0450   INPUT "HOEJKANT SKRIV 0,VANDRET SKRIV 1" , J
 0460   LET XOMS = 25 ; YOMS = 25
 0470   LET XMAX = 395 + J * 217 ; YMAX = 608 - J * 188
 0480   PRINT "ANF0R BEGYNDELSESPUNKTETS PLACERING PAA PAPI-"
 0490   PRINT "RET MAALT I CM VANDRET OG CM LODRET FRA NEDERSTE VENSTRE"
 0500   PRINT "HJ0ERNE."
 0510   INPUT "CM VANDRET " , XO , "     CM LODRET " , YO
 0520   INPUT "1 CM PAA X-AKSEN SKAL SVARE TIL" , X1
 0530   INPUT "1 CM PAA Y-AKSEN SKAL SVARE TIL" , Y1
 0540 ENDPROC
 0550 PROC GRAF
 0560   PRINT "<27><12>"
 0570   DELAY = 1
 0580   LET X0 = XOMS * XO ; Y0 = YOMS * YO
 0590   CALL "GRAPH" , X0 , 0
 0600   CALL "OUTVECT" , X0 , YMAX
 0610   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , YMAX - 4
 0620   CALL "OUTVECT" , X0 + 4 , YMAX - 4
 0630   CALL "OUTVECT" , X0 , YMAX
 0640   CALL "GRAPH" , 0 , Y0
 0650   CALL "OUTVECT" , XMAX , Y0
 0660   CALL "OUTVECT" , XMAX - 4 , Y0 + 4
 0670   CALL "OUTVECT" , XMAX - 4 , Y0 - 4 * ( Y0 >= 4 )
 0680   CALL "OUTVECT" , XMAX , Y0
 0690   FOR I = 1 TO 23 - 7 * J
 0700     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , I * YOMS
 0710     CALL "OUTVECT" , X0 + 2 , I * YOMS
 0720   NEXT 
 0730   FOR I = 1 TO 15 + 8 * J
 0740     CALL "GRAPH" , I * XOMS , Y0 - 2 * ( Y0 > 2 )
 0750     CALL "OUTVECT" , I * XOMS , Y0 + 2
 0760   NEXT 
 0770   FOR I = 1 TO N
 0780     LET X = X0 + XOMS * KO ( 1 , I ) / X1
 0790     LET Y = Y0 + YOMS * KO ( 2 , I ) / Y1
 0800     IF ( X < 2 ) + ( X > 1021 ) + ( Y < 2 ) + ( Y > YMAX - 2 ) THEN GOTO 0850
 0810     CALL "GRAPH" , X - 2 , Y + 2
 0820     CALL "OUTVECT" , X + 2 , Y - 2
 0830     CALL "GRAPH" , X - 2 , Y - 2
 0840     CALL "OUTVECT" , X + 2 , Y + 2
 0850   NEXT 
 0860   ON ERR THEN LET XNEDRE = 0
 0870   LET XNEDRE = X0 + ( - Y0 * Y1 / YOMS - Q ) * XOMS / P / X1
 0880   ON ERR THEN LET X0VRE = XMAX
 0890   LET X0VRE = X0 + ( ( YMAX - Y0 ) * Y1 / YOMS - Q ) * XOMS / X1 / P
 0900   LET YVENSTRE = Y0 + ( - X0 * X1 * P / XOMS + Q ) * YOMS / Y1
 0910   LET YH0JRE = Y0 + ( ( XMAX - X0 ) * X1 * P / XOMS + Q ) * YOMS / Y1
 0920   LET XSTART = XNEDRE * ( XNEDRE >= 0 ) * ( P >= 0 ) + X0VRE * ( X0VRE >= 0 ) * ( P < 0 )
 0930   LET YSTART = YVENSTRE * ( XSTART = 0 ) + YMAX * ( XSTART <> 0 ) * ( P < 0 )
 0940   LET XSLUT = ( X0VRE * ( X0VRE <= XMAX ) + XMAX * ( X0VRE > XMAX ) ) * ( P >= 0 ) + ( XNEDRE * ( XNEDRE <= XMAX ) + XMAX * ( XNEDRE > XMAX ) ) * ( P < 0 )
 0950   LET YSLUT = YH0JRE * ( XSLUT = XMAX ) + YMAX * ( XSLUT <> XMAX ) * ( P > 0 )
 0960   CALL "GRAPH" , XSTART , YSTART
 0970   CALL "OUTVECT" , XSLUT , YSLUT
 0980   CALL "GRAPH" , 0 , 765
 0990   CALL "ALPHA"
 1000 ENDPROC
 1010 PROC GRAFH
 1020   PRINT "<27><12>"
 1030   DELAY = 1
 1040   LET X0 = YO * XOMS ; Y0 = 783 - XO * YOMS
 1050   CALL "GRAPH" , X0 , 779
 1060   CALL "OUTVECT" , X0 , 779 - YMAX
 1070   CALL "OUTVECT" , X0 - 4 * ( X0 >= 4 ) , 783 - YMAX
 1080   CALL "OUTVECT" , X0 + 4 , 783 - YMAX
 1090   CALL "OUTVECT" , X0 , 779 - YMAX
 1100   CALL "GRAPH" , 0 , Y0
 1110   CALL "OUTVECT" , XMAX , Y0
 1120   CALL "OUTVECT" , XMAX - 4 , Y0 + 4 * ( Y0 <= 775 )
 1130   CALL "OUTVECT" , XMAX - 4 , Y0 - 4
 1140   CALL "OUTVECT" , XMAX , Y0
 1150   FOR I = 1 TO 16
 1160     CALL "GRAPH" , X0 - 2 * ( X0 >= 2 ) , 783 - I * YOMS
 1170     CALL "OUTVECT" , X0 + 2 , 783 - I * YOMS
 1180   NEXT 
 1190   FOR I = 1 TO 23
 1200     CALL "GRAPH" , I * XOMS , Y0 - 2
 1210     CALL "OUTVECT" , I * XOMS , Y0 + 2 * ( Y0 <= 775 )
 1220   NEXT 
 1230   FOR I = 1 TO N
 1240     LET X = X0 + XOMS * KO ( 2 , I ) / Y1
 1250     LET Y = Y0 - YOMS * KO ( 1 , I ) / X1
 1260     IF ( X < 2 ) + ( X > 1021 ) + ( Y > 777 ) + ( Y < 777 - YMAX ) THEN GOTO 1310
 1270     CALL "GRAPH" , X - 2 , Y + 2
 1280     CALL "OUTVECT" , X + 2 , Y - 2
 1290     CALL "OUTVECT" , X - 2 , Y - 2
 1300     CALL "OUTVECT" , X + 2 , Y + 2
 1310   NEXT 
 1320   LET XSTARTH = YSTART * XOMS / 25 ; YSTARTH = 783 - XSTART * YOMS / 25
 1330   LET XSLUTH = YSLUT * XOMS / 25 ; YSLUTH = 783 - XSLUT * YOMS / 25
 1340   IF YSTARTH > 779 THEN
 1350     LET YSTARTH = 779
 1360     LET XSTARTH = ( YSTART + 100 * P * X1 / Y1 / YOMS ) * XOMS / 25
 1370   ENDIF 
 1380   IF YSLUTH > 779 THEN
 1390     LET YSLUTH = 779
 1400     LET XSLUTH = ( YSLUT + 100 * P * X1 / Y1 / YOMS ) * XOMS / 25
 1410   ENDIF 
 1420   CALL "GRAPH" , XSTARTH , YSTARTH
 1430   CALL "OUTVECT" , XSLUTH , YSLUTH
 1440   CALL "GRAPH" , 0 , 765
 1450   CALL "ALPHA"
 1460 ENDPROC
 1470 PROC RETTE
 1480   PRINT "HVIS ET TAELSAET SKAL RETTES, INDTAST DETS NR. ELLERS INDTAST 0"
 1488   INPUT I
 1490   IF I = 0 THEN GOTO 1540
 1495   ON ERR THEN EXEC OUTERR
 1498   PRINT "TAELSAET NR " , I ;
 1500   INPUT "    X=" , KO ( 1 , I ) , "    Y=" , KO ( 2 , I )
 1510   GOTO 1480
 1532   PROC OUTERR
 1533     PRINT
 1534     PRINT "FORKERT NR. PR0V IGEN!!"
 1536   ENDPROC
 1540 ENDPROC
 1550 PROC CHOICE
 1560   DIM Q$ ( 1 )
 1570   PRINT "HVIS DENNE GRAF 0NSKES TEGNET, INDTAST T"
 1580   PRINT "HVIS DER 0NSKES NYT KOORDINATSYSTEM, INDTAST K"
 1590   PRINT "PROGRAMMET AFBRYDES VED AT INDTASTE S"
 1600   INPUT Q$
 1610   IF ( Q$ <> "T" ) * ( Q$ <> "K" ) * ( Q$ <> "S" ) THEN GOTO 1600
 1620   CASE Q$ OF
 1630   WHEN "T"
 1640     LET XOMS = 41.8 ; YOMS = 43.5
 1650     LET XMAX = 1023 ; YMAX = 730
 1660     PRINT "<27>AE"
 1670     IF J THEN
 1680       EXEC GRAF
 1690     ELSE 
 1700       EXEC GRAFH
 1710     ENDIF 
 1720     PRINT "<27>AF"
 1730     PRINT "HVIS GRAFEN 0NSKES TEGNET IGEN, INDTAST T"
 1740   WHEN "K"
 1750     EXEC KOVALG
 1760     EXEC GRAF
 1770     PRINT "HVIS DENNE GRAF 0NSKES TEGNET, INDTAST T"
 1780   WHEN "S"
 1790     END «nul»+
 1800   ENDCASE «nul» 
 1810   GOTO 1580
 1820 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 = 0x0001
      stack[0] = 0x0222
      stack[1] = 0x07ad
      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 = 3.3735e-80   (0x00010000)
      Var# = 0x0000
      Loop Top = 0x0001
      To Val = 3.3735e-80   (0x00010000)
      Step Val = 0   (0x00000000)
      Var# = 0x0087
      Loop Top = 0x019a
      To Val = 10   (0x41a00000)
      Step Val = 1   (0x41100000)
      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 0xffff 0x00 
    0x81 0x0000 0x00 N
    0x82 0x0002 0x01 KO
    0x83 0x0041 0x00 SUMX
    0x84 0x0043 0x00 SUMY
    0x85 0x0045 0x00 SUMXY
    0x86 0x0047 0x00 SUMX2
    0x87 0x0049 0x00 I
    0x88 0x004b 0x00 EX
    0x89 0x004d 0x00 EY
    0x8a 0x004f 0x00 EXY
    0x8b 0x0051 0x00 EX2
    0x8c 0x0053 0x00 VARX
    0x8d 0x0055 0x00 P
    0x8e 0x0057 0x00 Q
    0x8f 0xffff 0x00 LIST10
    0x90 0xffff 0x00 LISTT
    0x91 0xffff 0x00 LIIST
    0x92 0xffff 0x00 LIST50
    0x93 0xffff 0x00 VANDRET
    0x94 0xffff 0x00 XO
    0x95 0xffff 0x00 YO
    0x96 0xffff 0x00 X1
    0x97 0xffff 0x00 Y1
    0x98 0xffff 0x00 XO0
    0x99 0xffff 0x00 X0
    0x9a 0xffff 0x00 Y0
    0x9b 0xffff 0x00 I1
    0x9c 0xffff 0x00 I2
    0x9d 0xffff 0x00 I3
    0x9e 0xffff 0x00 I4
    0x9f 0xffff 0x00 CM
    0xa0 0xffff 0x00 LIST450
    0xa1 0xffff 0x00 X
    0xa2 0xffff 0x00 XNED
    0xa3 0xffff 0x00 XOP
    0xa4 0xffff 0x00 LISTLIST
    0xa5 0xffff 0x00 Y
    0xa6 0xffff 0x00 XNEDRE
    0xa7 0xffff 0x00 X0VRE
    0xa8 0xffff 0x00 YNEDRE
    0xa9 0xffff 0x00 Y0VRE
    0xaa 0xffff 0x00 LIST300
    0xab 0xffff 0x00 ST
    0xac 0xffff 0x00 LIST200
    0xad 0x005f 0x00 J
    0xae 0xffff 0x00 XOMS
    0xaf 0xffff 0x00 YOMS
    0xb0 0xffff 0x00 LIST400
    0xb1 0xffff 0x00 XMAX
    0xb2 0xffff 0x00 YMAX
    0xb3 0xffff 0x00 X0MS
    0xb4 0xffff 0x00 LLIST
    0xb5 0xffff 0x00 LIST305
    0xb6 0xffff 0x00 YVENSTRE
    0xb7 0xffff 0x00 YH0JRE
    0xb8 0xffff 0x00 XSTART
    0xb9 0xffff 0x00 O
    0xba 0xffff 0x00 XSLUT
    0xbb 0xffff 0x00 YSTART
    0xbc 0xffff 0x00 LISLIST
    0xbd 0xffff 0x00 YSLUT
    0xbe 0xffff 0x00 NUL
    0xbf 0xffff 0x00 YSTOP
    0xc0 0xffff 0x00 PRNT
    0xc1 0xffff 0x00 KOVALG
    0xc2 0xffff 0x00 LINIE
    0xc3 0xffff 0x00 GRAF
    0xc4 0xffff 0x02 G$
    0xc5 0xffff 0x02 K$
    0xc6 0xffff 0x00 RUNRUN
    0xc7 0xffff 0x00 UN
    0xc8 0xffff 0x00 LIST1000
    0xc9 0xffff 0x00 RTUN
    0xca 0xffff 0x02 Q$
    0xcb 0xffff 0x00 TALSAET
    0xcc 0xffff 0x00 Z
    0xcd 0xffff 0x00 RETTE
    0xce 0xffff 0x00 GRAF1
    0xcf 0xffff 0x00 GRAFH
    0xd0 0xffff 0x00 GRAFH0J
    0xd1 0xffff 0x00 XSLUTH
    0xd2 0xffff 0x00 YSLUTH
    0xd3 0xffff 0x00 XSTARTH
    0xd4 0xffff 0x00 YSTARTH
    0xd5 0xffff 0x00 LIAT
    0xd6 0xffff 0x00 YALUTH
    0xd7 0xffff 0x00 LIST1600
    0xd8 0xffff 0x00 CHOICE
    0xd9 0xffff 0x00 WHWN
    0xda 0xffff 0x00 OUTERR
    0xdb 0x0059 0x00 SUMU1
    0xdc 0x005b 0x00 SUMU2
    0xdd 0x005d 0x00 USP

Wrapper

.magic = 0x4e32
.u_pas = 0x0882  // Length of UPAS in words
.u_das = 0x029f  // Length of UDAS in words
.u_dvs = 0x023e  // Start på savede variabel indhold (word adr)
.u_nds = 0x024b  // Address på næste prog.sætning (word adr)
.u_cps = 0x0236  // 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)