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

⟦36c5bb91c⟧ COMAL_SAVE

    Length: 4460 (0x116c)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦61c33a569⟧ »/GRAFT« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "GRAFT"

 0010 EXEC START
 0100 PRINT
 0290 REM   I DENNE LINIE DEFINERES FUNKTIONEN UNDER K0RSEL«nul»
 0302 EXEC IND
 0304 EXEC TEGN
 0306 EXEC CHOICE
 0450 PROC TEGN
 0460   PRINT "<27><12>"
 0470   DELAY = 1
 0480   LET A2 = XAKS * ( XAKS >= 45 ) * ( XAKS <= FELT - 45 ) + 5 * ( XAKS < 45 ) + 5 * ( XAKS > FELT - 45 )
 0482   LET A1 = 145 ; A3 = FELT + 100 ; A4 = A2 ; C1 = - 5 ; C2 = 3 ; C3 = C1 ; C4 = - 3 ; C5 = 8 ; C6 = 0
 0487   LET X0 = INT ( ( XAKS - 45 ) / S ) ; Y0 = INT ( ( YAKS - 145 ) / S )
 0490   LET Y = A2 + 4 ; START = YAKS - Y0 * S ; SLUT = START + 11 * S
 0500   EXEC KOORD
 0502   LET A1 = YAKS * ( YAKS >= 145 ) * ( YAKS <= FELT + 100 ) + 105 * ( YAKS < 145 ) + 105 * ( YAKS > FELT + 100 )
 0510   LET A2 = 45 ; A3 = A1 ; A4 = FELT ; C1 = 3 ; C2 = - 5 ; C3 = - 3 ; C4 = C2 ; C5 = 0 ; C6 = 8
 0520   LET X = A1 + 4 ; START = XAKS - X0 * S ; SLUT = START + 11 * S
 0530   EXEC KOORD
 0540   LET A1 = 650
 0550   IF YAKS > 640 THEN LET A1 = 150
 0560   CALL "GRAPH" , A1 , FELT - 40
 0570   CALL "ALPHA"
 0580   PRINT "Y=" ; GEM$
 0600   LET DX = ( X2 - X1 ) / 250 ; VEC = 0
 0610   CALL "GRAPH" , X1 * XSTEP + YAKS , FNY ( X1 ) * YSTEP + XAKS
 0620   FOR T = X1 TO X2 STEP DX
 0630     LET X = T * XSTEP + YAKS ; Y = FNY ( T ) * YSTEP + XAKS
 0640     IF ( X > FELT + 100 ) + ( Y < 45 ) + ( Y > FELT ) THEN
 0650       LET VEC = 0
 0660     ELSE 
 0670       CALL "VECTOR" , X , Y , VEC
 0680       LET VEC = 1
 0690     ENDIF 
 0700   NEXT 
 0710   CALL "GRAPH" , 0 , 780
 0730   CALL "ALPHA"
 0732 ENDPROC
 0738 PROC CROSS
 0740   ON ERR THEN EXEC OUTERR
 0741   LET AFBRYD = 2
 0742   PRINT "<29>" ;
 0746   INPUT "<27><26>" , G$ ;
 0748   IF LEN ( G$ ) = 0 THEN GOTO 0810
 0749   PRINT "<31>" ;
 0750   LET X = ( ORD ( G$ ( 2 ) ) - 33 ) * 32 + ORD ( G$ ( 3 ) )
 0752   LET Y = ( ORD ( G$ ( 4 ) ) - 33 ) * 32 + ORD ( G$ ( 5 ) )
 0770   LET XKOR = ( X - YAKS ) / XSTEP ; YKOR = ( Y - XAKS ) / YSTEP
 0775   IF AFBRYD = 3 THEN GOTO 0741
 0790   PAGE = 72
 0800   PRINT "(" ; XKOR ; "," ; YKOR ; ")"
 0802   GOTO 0741
 0810   PRINT "<31>"
 0820   LET AFBRYD = 1
 0830   LET A = 1 / 0
 0840 ENDPROC
 0930 PROC KOORD
 0940   CALL "GRAPH" , A1 , A2
 0950   CALL "OUTVECT" , A3 , A4
 0960   CALL "OUTVECT" , A3 + C1 , A4 + C2
 0970   CALL "OUTVECT" , A3 + C3 , A4 + C4
 0980   CALL "OUTVECT" , A3 , A4
 0990   FOR T = START TO SLUT STEP S
 1000     IF C5 THEN LET X = T
 1010     IF C6 THEN LET Y = T
 1020     CALL "GRAPH" , X , Y
 1030     CALL "OUTVECT" , X - C6 , Y - C5
 1040   NEXT 
 1050   DELAY = 1
 1060 ENDPROC
 1110 PROC IND
 1120   PRINT "   INDTAST MINDSTE OG ST0RSTE X-VAERDI: " ;
 1130   INPUT "XMIN,XMAX ? " , X1 , X2
 1140   IF X1 >= X2 THEN GOTO 1130
 1150   PRINT
 1160   PRINT "   INDTAST MINDSTE OG ST0RSTE Y-VAERDI: " ;
 1170   INPUT "YMIN,YMAX ? " , Y1 , Y2
 1180   IF Y1 >= Y2 THEN GOTO 1170
 1190   LET S = 50 ; FELT = 650
 1202   LET E ( 1 ) = S * ( X2 - X1 ) / FELT ; E ( 2 ) = S * ( Y2 - Y1 ) / FELT
 1210   FOR I = 1 TO 2
 1215     LET ENH = 0
 1220     IF E ( I ) > 1 THEN
 1230       LET D1 = 2.5 ; D2 = 5 ; D3 = 7.5 ; D4 = 10
 1240       REPEAT 
 1250         LET ENH = D1 * ( E ( I ) <= D1 ) + D2 * ( E ( I ) > D1 ) * ( E ( I ) <= D2 ) + D3 * ( E ( I ) > D2 ) * ( E ( I ) <= D3 ) + D4 * ( E ( I ) > D3 ) * ( E ( I ) <= D4 )
 1260         LET D1 = 10 * D1 ; D2 = 10 * D2 ; D3 = 10 * D3 ; D4 = 10 * D4
 1270       UNTIL ENH
 1280     ELSE 
 1300       LET D1 = 0.1 ; D2 = 0.25 ; D3 = 0.5 ; D4 = 0.75
 1310       REPEAT 
 1320         LET ENH = D2 * ( E ( I ) > D1 ) * ( E ( I ) <= D2 ) + D3 * ( E ( I ) > D2 ) * ( E ( I ) <= D3 ) + D4 * ( E ( I ) > D3 ) * ( E ( I ) <= D4 ) + 10 * D1 * ( E ( I ) > D4 )
 1330         LET D1 = D1 / 10 ; D2 = D2 / 10 ; D3 = D3 / 10 ; D4 = D4 / 10
 1340       UNTIL ENH
 1345     ENDIF 
 1350     LET E ( I ) = ENH
 1360   NEXT 
 1362   LET XSTEP = S / E ( 1 ) ; YSTEP = S / E ( 2 )
 1364   LET XAKS = - YSTEP * Y1 + 45 ; YAKS = - XSTEP * X1 + 145
 1365   PRINT
 1368   PRINT
 1370   PRINT "   ET INTERVAL PAA X-AKSEN ER LIG " ; E ( 1 )
 1375   PRINT "   ET INTERVAL PAA Y-AKSEN ER LIG " ; E ( 2 )
 1380   PRINT
 1381   PRINT
 1382   INPUT "   NAAR DU ER PARAT, TAST RETURN" , G$
 1390 ENDPROC
 1983 PRINT "" ;
 2000 PROC CHOICE
 2010   PRINT "DU HAR F0LGENDE MULIGHEDER (INDTAST TALLET):"
 2020   PRINT "1 = KOORDINATS0GNING (KOORDINATERNE TIL KORSET FAAS VED AT"
 2022   PRINT "    TRYKKE PAA ET BOGSTAV. DU VENDER TILBAGE TIL HOVED-"
 2024   PRINT "    PROGRAMMET VED AT TASTE RETURN)"
 2030   PRINT "2 = DEN NUVAERENDE GRAF TEGNES PAA PLOTTEREN"
 2035   PRINT "3 = SAMME FUNKTION I NYT INTERVAL"
 2040   PRINT "4 = STOP"
 2050   INPUT Q
 2060   LET Q = INT ( Q )
 2070   IF ( Q < 1 ) + ( Q > 4 ) THEN GOTO 2050
 2080   IF Q = 1 THEN EXEC CROSS
 2130   IF Q = 2 THEN
 2140     LET S = 60 ; FELT = 780
 2141     LET XSTEP = S / E ( 1 ) ; YSTEP = S / E ( 2 )
 2142     LET XAKS = - YSTEP * Y1 + 45 ; YAKS = - XSTEP * X1 + 145
 2150     PRINT "<27>AE"
 2160     EXEC TEGN
 2170     PRINT "<27>AF"
 2200   ENDIF 
 2210   IF Q = 3 THEN
 2220     PRINT "<27><12>"
 2230     DELAY = 1
 2240     EXEC IND
 2250     EXEC TEGN
 2260   ENDIF 
 2262   IF Q = 1 THEN GOTO 2050
 2264   IF ( Q = 2 ) + ( Q = 3 ) THEN GOTO 2010
 2290 ENDPROC
 2300 PROC START
 2310   PRINT "<27>AF"
 2320   PRINT "<27><12>"
 2330   DELAY = 1
 2335   DIM G$ ( 5 )
 2336   DIM GEM$ ( 100 )
 2340   PRINT TAB ( 20 ) ; "***   GRAFTEGNER   ***"
 2350   PRINT
 2360   PRINT "   PROGRAMMET TEGNER GRAFEN FOR ENHVER FUNKTION Y=F(X) I ET"
 2370   PRINT "VILKAARLIGT INTERVAL I DEFINITIONSOMRAADET. I TVIVLSTILFAEL-"
 2380   PRINT "DE, SE DEN SAERLIGE VEJLEDNING I PROGRAMMAPPEN."
 2390   PRINT
 2400   PRINT
 2451   LET AFBRYD = 0
 2452   ON ESC THEN EXEC OUTESC
 2460   CREATE "GEM" , 1
 2470   OPEN FILE ( 0 , 2 ) "GEM"
 2480   PRINT "     INDTAST FUNKTIONEN: " ;
 2490   INPUT "Y=" , GEM$
 2500   WRITE FILE ( 0 ) " 290 DEF FNY(X)=" , GEM$ , "<13><10>"
 2510   CLOSE
 2520   ENTER "GEM"
 2530   CLOSE
 2540   DELETE "GEM"
 2570   LET AFBRYD = 1
 2575   IF SYS ( 7 ) <> 0 THEN STOP «nul» 
 2580   DIM E ( 2 )
 2600 ENDPROC
 2800 PROC OUTESC
 2810   ON ESC THEN EXEC OUTESC
 2820   IF AFBRYD THEN
 2830     END «nul»
 2840   ENDIF 
 2850 ENDPROC
 3000 PROC OUTERR
 3010   IF AFBRYD = 1 THEN GOTO 3030
 3020   ON ERR THEN EXEC OUTERR
 3025   LET AFBRYD = 3
 3030 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 0x02 GEM$
    0x82 0xffff 0x00 E
    0x83 0xffff 0x00 IND
    0x84 0xffff 0x00 TEGN
    0x85 0xffff 0x00 CHOICE
    0x86 0xffff 0x00 A2
    0x87 0xffff 0x00 XAKS
    0x88 0xffff 0x00 FELT
    0x89 0xffff 0x00 A1
    0x8a 0xffff 0x00 A3
    0x8b 0xffff 0x00 A4
    0x8c 0xffff 0x00 C1
    0x8d 0xffff 0x00 C2
    0x8e 0xffff 0x00 C3
    0x8f 0xffff 0x00 C4
    0x90 0xffff 0x00 C5
    0x91 0xffff 0x00 C6
    0x92 0xffff 0x00 X0
    0x93 0xffff 0x00 S
    0x94 0xffff 0x00 Y0
    0x95 0xffff 0x00 YAKS
    0x96 0xffff 0x00 Y
    0x97 0xffff 0x00 START
    0x98 0xffff 0x00 SLUT
    0x99 0xffff 0x00 KOORD
    0x9a 0xffff 0x00 X
    0x9b 0xffff 0x00 DX
    0x9c 0xffff 0x00 X2
    0x9d 0xffff 0x00 X1
    0x9e 0xffff 0x00 VEC
    0x9f 0xffff 0x00 YSTEP
    0xa0 0xffff 0x00 T
    0xa1 0xffff 0x00 XSTEP
    0xa2 0xffff 0x00 CROSS
    0xa3 0xffff 0x00 XKOR
    0xa4 0xffff 0x00 YKOR
    0xa5 0xffff 0x02 G$
    0xa6 0xffff 0x00 ERR2
    0xa7 0xffff 0x00 Y1
    0xa8 0xffff 0x00 Y2
    0xa9 0xffff 0x00 I
    0xaa 0xffff 0x00 ENH
    0xab 0xffff 0x00 D1
    0xac 0xffff 0x00 D2
    0xad 0xffff 0x00 D3
    0xae 0xffff 0x00 D4
    0xaf 0xffff 0x00 Q
    0xb0 0xffff 0x00 AFBRYD
    0xb1 0xffff 0x00 OUTERR
    0xb2 0xffff 0x00 A
    0xb3 0xffff 0x00 ENPROC
    0xb4 0xffff 0x00 OUTER
    0xb5 0xffff 0x00 ONESC
    0xb6 0xffff 0x00 OUTESC
    0xb7 0xffff 0x00 L502
    0xb8 0xffff 0x02 Q$

Wrapper

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