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

⟦a2fa908d2⟧ COMAL_SAVE

    Length: 4114 (0x1012)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦ab9aca9fb⟧ »/HJB01« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "HJB01"

 0010 REM  ***   HENRIK BRUHN 2.Y  DEN 30-4-82   ***«nul»B
 0020 PRINT
 0030 PRINT "<14><28>" ; "     FUNKTIONSUNDERSØGELSE"
 0040 PRINT
 0050 PRINT "FUNKTIONEN ER DEFINERET I LINIE 100.ØNSKES"
 0060 PRINT "UNDERSØGELSE AF NY FKT AENDRES DENNE DEF."
 0070 PRINT "PROGRAMMET KØRES VIDERE VED AT TASTE ''CON''"
 0080 PRINT "(KAN KUN UNDERSØGE FKT I MONOTONE INTERVALLER)"
 0090 STOP «nul» 
 0100 DEF FNA ( VAR98 ) = 2 * ( [LVAR]  ^ 2 ) - 2
 0110 PRINT
 0120 DIM F$ ( 40 )
 0130 INPUT "INDTAST FUNKTIONSFORSKRIFTEN EN GANG TIL : " , F$
 0140 PRINT
 0150 PRINT
 0160 PRINT
 0170 PRINT "<14>" ; "***   GRAF   ***"
 0180 PRINT
 0190 INPUT "INDTAST STEPVÆRDI FOR GRAF : " , HOP
 0200 INPUT "INDTAST ENDEPUNKTERNE : " , VEN , H\J
 0210 PRINT
 0220 PRINT
 0230 PRINT "     F(X) = " ; F$
 0240 FOR TAEL = VEN TO H\J STEP HOP
 0250   LET ML = INT ( FNA ( TAEL ) )
 0260   IF TAEL = - HOP THEN
 0270     IF ML < 0 THEN PRINT TAB ( 30 + ML ) ; "*" ; TAB ( 30 ) ; "I" ; TAB ( 39 ) ; "10"
 0280     IF ML > 0 THEN PRINT TAB ( 18 ) ; "-10" ; TAB ( 30 ) ; "I" ; TAB ( 30 + ML ) ; "*"
 0290     IF ML = 0 THEN PRINT TAB ( 18 ) ; "-10" ; TAB ( 30 ) ; "*" ; TAB ( 39 ) ; "10"
 0300   ELSE 
 0310     IF TAEL > ( - 0.5 * HOP ) AND TAEL < 0.5 * HOP THEN
 0320       PRINT "-------------------+---------+---------+--------------------> Y"
 0330     ELSE 
 0340       IF ML <= 40 AND ML > 0 THEN
 0350         IF TAEL = 1 THEN PRINT TAB ( 28 ) ; "1 +" ; TAB ( 30 + ML ) ; "*"
 0360         IF TAEL = 10 THEN PRINT TAB ( 27 ) ; "10 +" ; TAB ( 30 + ML ) ; "*"
 0370         IF TAEL <> 1 AND TAEL <> 10 THEN PRINT TAB ( 30 ) ; "I" ; TAB ( 30 + ML ) ; "*"
 0380       ELSE 
 0390       ENDIF 
 0400       IF ML >= - 30 AND ML < 0 THEN
 0410         IF TAEL = 1 THEN PRINT TAB ( 30 + ML ) ; "*" ; TAB ( 28 ) ; "1 +"
 0420         IF TAEL = 10 THEN PRINT TAB ( 30 + ML ) ; "*" ; TAB ( 27 ) ; "10 +"
 0430         IF TAEL <> 1 AND TAEL <> 10 THEN PRINT TAB ( 30 + ML ) ; "*" ; TAB ( 30 ) ; "I"
 0440       ELSE 
 0450       ENDIF 
 0460       IF ML = 0 THEN PRINT TAB ( 30 + ML ) ; "*"
 0470     ENDIF 
 0480   ENDIF 
 0490 NEXT 
 0500 PRINT TAB ( 30 ) ; "V X"
 0510 PRINT
 0520 PRINT
 0530 PRINT
 0540 PRINT "<14>" ; "***   NULPUNKTER   ***"
 0550 PRINT
 0560 LET FEJL = 0
 0570 INPUT "INDTAST ØNSKEDE USIKKERHED" , E1
 0580 INPUT "INDTAST INTERVALGRAENSER : " , VE , HE
 0590 LET V = VE ; H = HE
 0600 LET FV = FNA ( V ) ; FH = FNA ( H ) ; T = 0
 0610 LET FVE = FV ; FHE = FH
 0620 IF FV * FH <= 0 THEN
 0630   REPEAT 
 0640     LET T = T + 1
 0650     LET M = ( V + H ) / 2
 0660     LET FM = FNA ( M )
 0670     IF FM * FV <= 0 THEN
 0680       LET H = M ; FH = FM
 0690     ELSE 
 0700       LET V = M ; FV = FM
 0710     ENDIF 
 0720   UNTIL H - V < 2 * E1
 0730   PRINT
 0740   LET R = ( V + H ) / 2
 0750   PRINT "ROD = " ; R
 0760 ELSE 
 0770   PRINT
 0780   PRINT "FUNKTIONEN HAR IKKE NULPUNKTER"
 0790   PRINT "ELLER ER IKKE MONOTON I INTERVALLET"
 0800   LET FEJL = 2
 0810 ENDIF 
 0820 IF FEJL <> 2 THEN
 0830   LET A1 = 1
 0840   REPEAT 
 0850     LET DRH = ( FNA ( R + A1 ) - FNA ( R ) ) / A1
 0860     LET DRV = ( FNA ( R - A1 ) - FNA ( R ) ) / ( - A1 )
 0870     LET A1 = A1 / 2
 0880   UNTIL ABS ( DRH - DRV ) <= E1
 0890   LET DR = ( DRH + DRV ) / 2
 0900 ELSE 
 0910 ENDIF 
 0920 PRINT
 0930 PRINT
 0940 PRINT "<14>" ; "***   MONOTONIFORHOLD   ***"
 0950 PRINT
 0960 LET H = HE ; V = VE
 0970 LET T1 = 1
 0980 REPEAT 
 0990   LET FHH = ( FNA ( H + T1 ) - FNA ( H ) ) / T1
 1000   LET FHV = ( FNA ( H - T1 ) - FNA ( H ) ) / ( - T1 )
 1010   LET T1 = T1 / 2
 1020 UNTIL ABS ( FHH - FHV ) <= E1
 1030 LET FH = ( FHH + FHV ) / 2
 1040 LET T2 = 1
 1050 REPEAT 
 1060   LET FVH = ( FNA ( V + T2 ) - FNA ( V ) ) / T2
 1070   LET FVV = ( FNA ( V - T2 ) - FNA ( V ) ) / ( - T2 )
 1080   LET T2 = T2 / 2
 1090 UNTIL ABS ( FVH - FVV ) <= E1
 1100 LET FV = ( FVH + FVV ) / 2
 1110 LET N = 0
 1120 LET DHE = FH ; DVE = FV
 1130 LET DV = FV ; DH = FH
 1140 IF FV * FH <= 0 THEN
 1150   REPEAT 
 1160     LET N = N + 1
 1170     LET M = ( V + H ) / 2
 1180     LET A2 = 1
 1190     REPEAT 
 1200       LET MH = ( FNA ( M + A2 ) - FNA ( M ) ) / A2
 1210       LET MV = ( FNA ( M - A2 ) - FNA ( M ) ) / ( - A2 )
 1220       LET A2 = A2 / 2
 1230     UNTIL ABS ( MH - MV ) <= E1
 1240     LET FM = ( MH + MV ) / 2
 1250     IF FM * FV <= 0 THEN
 1260       LET H = M ; FH = FM
 1270     ELSE 
 1280       LET V = M ; FV = FM
 1290     ENDIF 
 1300   UNTIL H - V < 2 * E1
 1310   LET D = ( V + H ) / 2
 1320   PRINT "VENDEPKT.= " ; D
 1330 ELSE 
 1340   LET FEJL = FEJL + 1
 1350   PRINT "FUNKTIONEN HAR IKKE VENDEPUNKTER"
 1360   PRINT "ELLER ER IKKE  MONOTON I INTERVALLET"
 1370 ENDIF 
 1380 PRINT
 1390 PRINT
 1400 PRINT "  X  " , " F'(X) " , " F(X)"
 1410 PRINT "----------------------------------------"
 1420 PRINT VE , DVE , FVE
 1430 IF FEJL = 0 THEN
 1440   IF D <> R THEN
 1450     IF D < R THEN
 1460       PRINT D , " 0" , FNA ( D )
 1470       PRINT R , DR , " 0"
 1480     ELSE 
 1490       PRINT R , DR , " 0"
 1500       PRINT D , " 0" , FNA ( D )
 1510     ENDIF 
 1520   ELSE 
 1530     PRINT R , " 0" , " 0"
 1540   ENDIF 
 1550 ELSE 
 1560   IF FEJL = 1 THEN PRINT R , DR , " 0"
 1570   IF FEJL = 2 THEN PRINT D , " 0" , FNA ( D )
 1580 ENDIF 
 1590 PRINT HE , DHE , FHE

UDAS Segment

    FNA definition = 0x00dc
    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# = 0x04b4
      Loop Top = 0x04d0
      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 = 5.14756e-85   (0x00000001)
      Step Val = 3.3735e-80   (0x00010000)
      Var# = 0x0090
      Loop Top = 0x0160
      To Val = 5   (0x41500000)
      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 0xffff 0x00 A
    0x82 0x0051 0x00 N
    0x83 0x0037 0x00 M
    0x84 0x0029 0x00 V
    0x85 0x002b 0x00 H
    0x86 0x0025 0x00 VE
    0x87 0x0027 0x00 HE
    0x88 0xffff 0x00 E
    0x89 0x002d 0x00 FV
    0x8a 0x002f 0x00 FH
    0x8b 0x0039 0x00 FM
    0x8c 0x003b 0x00 R
    0x8d 0x0023 0x00 E1
    0x8e 0x0061 0x00 D
    0x8f 0x0017 0x00 HOP
    0x90 0x001d 0x00 TAEL
    0x91 0x001f 0x00 ML
    0x92 0xffff 0x00 LIST100
    0x93 0x0019 0x00 VEN
    0x94 0x001b 0x00 H\J
    0x95 0x0031 0x00 T
    0x96 0xffff 0x00 ROD
    0x97 0x0021 0x00 FEJL
    0x98 0xffff 0x00 X
    0x99 0xffff 0x00 F
    0x9a 0x0000 0x02 F$
    0x9b 0xffff 0x00 LLIST
    0x9c 0xffff 0x00 FIND
    0x9d 0xffff 0x00 AUT0
    0x9e 0x0045 0x00 T1
    0x9f 0x0047 0x00 FHH
    0xa0 0xffff 0x00 TI
    0xa1 0x0049 0x00 FHV
    0xa2 0x004b 0x00 T2
    0xa3 0x004d 0x00 FVH
    0xa4 0x004f 0x00 FVV
    0xa5 0x0033 0x00 FVE
    0xa6 0x0035 0x00 FHE
    0xa7 0x0053 0x00 DHE
    0xa8 0x0055 0x00 DVE
    0xa9 0x0043 0x00 DR
    0xaa 0x003d 0x00 A1
    0xab 0x003f 0x00 DRH
    0xac 0x0041 0x00 DRV
    0xad 0xffff 0x00 CUNL
    0xae 0xffff 0x00 RYNL
    0xaf 0x005b 0x00 A2
    0xb0 0x005d 0x00 MH
    0xb1 0x005f 0x00 MV
    0xb2 0xffff 0x00 UYT
    0xb3 0xffff 0x00 LISBETH
    0xb4 0xffff 0x00 IYYBBZ
    0xb5 0xffff 0x00 RN
    0xb6 0xffff 0x00 U
    0xb7 0xffff 0x00 RU
    0xb8 0xffff 0x00 HEJ
    0xb9 0x0057 0x00 DV
    0xba 0x0059 0x00 DH

Wrapper

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