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

⟦24acc4399⟧ COMAL_SAVE

    Length: 4834 (0x12e2)
    Types: COMAL_SAVE

Derivation

└─⟦3d9d2c4f1⟧ Bits:30001780 SG0000 Floppy
    └─ ⟦ea6375f28⟧ »/GRPRO « 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "GRPRO"

 0010 REM  «so»  *** T I T R E R - B ***       ØH OKT.79«nul»
 0015 REM  IKKE TITRB MEN TITRC MED GRAFUDSKRIVNING PÅ TEKTRONIX'EN«nul»
 0020 REM  «nul»
 0030 REM «nul»
 0040 REM  TITRERING AF 10 ML 0.1M SYRER/BASE MED 0.1M NAOH/HCL«nul»
 0050 REM  SYREN/BASEN KAN VÆRE  DI - ELLER MONOVALENT (pKüü70)«nul»
 0060 REM  FOR BASER BEREGNES OH LIGESOM H FOR SYRER.«nul»
 0070 REM  DER ANVENDES NEWTON-RAPHSON ITERATION«nul»R
 0080 DIM SYRE$ ( 30 ) , LL$ ( 132 ) , T$ ( 12 )
 0090 INPUT "TITRERING AF SYRER(1) ELLER BASE(2) " , TITRAND
 0100 IF TITRAND <> 1 AND TITRAND <> 2 THEN GOTO 0090
 0110 LET SYRE = 1 ; BASE = 2
 0120 REPEAT 
 0130   IF TITRAND = SYRE THEN
 0140     INPUT "SYRENS NAVN           " , SYRE$
 0145     PRINT "HVIS K2=0  INDTAST DA PK2= FEKS. 20"
 0150     INPUT "SYRENS PK-værdier  (pK1 og pK2) " , KA1 , KA2
 0160   ELSE 
 0170     INPUT "BASENS NAVN           " , SYRE$
 0180     INPUT " BASENS pK-værdier  (pKb1 og pKb2)" , KA1 , KA2
 0190   ENDIF 
 0195   IF KA2 > 20 THEN LET KA2 = 15.7
 0200   LET KA1 = 10 ^ ( - KA1 ) ; KA2 = 10 ^ ( - KA2 )
 0210 UNTIL KA1 > KA2 AND KA2 >= 0
 0220 REM  ÆKVIVALENS-PUNKTER VED 10 OG 20 ML. SLUT +5 ML.«nul» 
 0230 LET SLUT = 25
 0240 IF KA2 = 0 THEN LET SLUT = 15
 0250 LET XMIN = 0 ; XMAX = SLUT ; YMIN = 0 ; YMAX = 15
 0255 LET YMIN = - 1 ; YMAX = 14
 0260 REM  DER TITSÆTTES EKSTRA VAND. MÆNGDE ANGIVES I M.MOL«nul»
 0270 INPUT "KONDITIONELT EKSTRAVOLUMEN VX : " , VX
 0280 IF VX < 0 THEN GOTO 0270
 0290 LET VOL = 10 + VX ; A = 1 ; TIT = 0 ; VTIT = 0
 0300 EXEC SLET
 0305 EXEC UDSKRIFT
 0310 EXEC COAKSE
 0320 EXEC DEFF
 0340 LET CTOT = A / VOL ; H = SQR ( CTOT * KA1 ) ; N = 0
 0350 IF KA1 > 100 THEN LET H = CTOT
 0360 REPEAT 
 0370   EXEC KOEF
 0380   EXEC ITERATOR
 0390   LET PH = - FNL ( H )
 0400   IF TITRAND = BASE THEN LET PH = 14 - PH
 0410   LET X = VTIT ; Y = PH
 0420   IF VTIT = 0 THEN EXEC HOP
 0430   EXEC LINIE
 0440   LET DV = 1 / 4 ; N = N + 1
 0450   LET VTIT = VTIT + DV ; TIT = 0.1 * VTIT ; VOL = VOL + DV
 0460 UNTIL VTIT > SLUT
 0490 PROC DEFF
 0500   LET KW = 1e-14
 0510   DEF FNP ( VAR88 ) = [LVAR]  ^ 4 + K1 * [LVAR]  ^ 3 + K2 * [LVAR]  ^ 2 + K3 * [LVAR]  + K4
 0520   DEF FND ( VAR88 ) = 4 * [LVAR]  ^ 3 + 3 * K1 * [LVAR]  ^ 2 + 2 * K2 * [LVAR]  + K3
 0530   DEF FNL ( VAR98 ) = LOG ( [LVAR]  ) / LOG ( 10 )
 0540 ENDPROC
 0550 PROC KOEF
 0560   LET CTIT = TIT / VOL ; CTOT = A / VOL ; K1 = CTIT + KA1
 0570   LET K2 = KA1 * KA2 - KA1 * CTOT + KA1 * CTIT - KW
 0580   LET K3 = - 2 * KA1 * KA2 * CTOT + KA1 * KA2 * CTIT - KA1 * KW
 0590   LET K4 = - KA1 * KA2 * KW
 0600 ENDPROC
 0610 PROC ITERATOR
 0620   REPEAT 
 0630     IF H = 0 THEN LET H = 1e-20
 0640     LET H1 = H - FNP ( H ) / FND ( H ) ; REL = ABS ( ( H1 - H ) / H ) ; H = H1
 0650   UNTIL REL < 0.01
 0660 ENDPROC
 0670 PROC UDSKRIFT
 0680   DIM TITRATOR$ ( 4 )
 0690   IF TITRAND = SYRE THEN LET TITRATOR$ = "NAOH"
 0700   IF TITRAND = BASE THEN LET TITRATOR$ = "HCL"
 0710   PRINT "<12><14> **TITRERING AF 10 ML 0,1M " ; SYRE$ ; " MED 0,1M " ; TITRATOR$ ; " **"
 0720   PRINT
 0730   PRINT "     PK1 = ###.##" , - FNL ( KA1 )
 0735   IF KA2 > 10 ^ ( - 16 ) THEN PRINT "    PK2 = ###.##" , - FNL ( KA2 )
 0740   PRINT " KONDITIONELT EKSTRAVOLUMEN " ; VX ; " ML"
 0750   PRINT
 0800 ENDPROC
 9000 REM  ØRSTED  NOV.78 «so»GRAFKO SIDE 1«nul»D
 9005 REM  HUSK AT SLETTE DENNE PROCEDURE INDEN SAVE'ING ELLER LIST'NING«nul»«nul»
 9010 PROC COAKSE
 9015   PAGE = 0
 9020   ON ESC THEN EXEC UDSKIFT
 9025   LET SX = 1000 / ( XMAX - XMIN )
 9030   LET SY = 800 / ( YMAX - YMIN )
 9035   LET SKIFT = 0
 9040   EXEC RAMME
 9045   REM  YAKSE«nul»«nul»
 9050   REM  X«nul»K
 9055   LET AKSE = 0
 9060 ENDPROC
 9065 PROC SLET
 9070   PRINT "<27><12>"
 9075   DELAY = 1
 9080   LET SKIFT = 1
 9085 ENDPROC
 9090 PROC SKIFT
 9095   IF SKIFT THEN
 9100     PRINT "<29>" ;
 9105   ELSE 
 9110     PRINT "<31>" ;
 9115   ENDIF 
 9120   LET SKIFT = 1 - SKIFT
 9125 ENDPROC
 9130 PROC UDSKIFT
 9135   LET SKIFT = 1
 9140   ON ESC THEN EXEC UDSKIFT
 9145   STOP «nul» 
 9150 ENDPROC
 9155 PROC RAMME
 9160   LET AKSE = 1 ; XA = 0 ; YA = 0
 9165   EXEC HOP
 9170   LET XA = 1023
 9175   EXEC LINIE
 9180   PRINT "<29> @ `?<127> `?<127>8k @8k @ `" ;
 9185   EXEC LINIE
 9190   LET XA = 0
 9195   EXEC LINIE
 9200   LET YA = 0 ; SS = 1
 9205   EXEC LINIE
 9210   LET YAA = 0
 9215   EXEC XINDEL
 9220   LET XAA = 0
 9225   EXEC YINDEL
 9230 ENDPROC
 9235 PROC XINDEL
 9240   FOR I = 2 TO SLUT STEP 2
 9245     LET XA = 100 * I ; YA = YAA - 10
 9247     LET XA = 1000 * I / SLUT
 9250     EXEC HOP
 9255     LET YA = YAA + 10
 9260     EXEC LINIE
 9265     IF SS = 0 OR I = SLUT THEN GOTO 9285
 9270     EXEC SKIFT
 9275     PRINT XA / SX + XMIN
 9280     EXEC SKIFT
 9285   NEXT 
 9290 ENDPROC
 9295 REM  ØRSTED NOV. 78 «ff»
«so»GRAFPROC SIDE 2«nul»
 9300 PROC YINDEL
 9305   FOR I = 1 TO 14
 9310     LET YA = 800 * I / 15 ; XA = XAA - 10
 9315     EXEC HOP
 9320     LET XA = XAA + 10
 9325     EXEC LINIE
 9330     IF SS = 0 THEN GOTO 9350
 9335     EXEC SKIFT
 9340     PRINT YA / SY + YMIN
 9345     EXEC SKIFT
 9350   NEXT 
 9355 ENDPROC
 9360 PROC XAKSE
 9365   LET AKSE = 0 ; SS = 0
 9370   LET X = XMIN ; Y = 0
 9375   EXEC HOP
 9380   LET AKSE = 1 ; YAA = YA ; XA = 1010
 9385   EXEC LINIE
 9390   LET XA = 1000 ; YA = YAA + 10
 9395   EXEC LINIE
 9400   LET YA = YAA - 10
 9405   EXEC LINIE
 9410   LET YA = YAA ; XA = 1010
 9415   EXEC LINIE
 9420   LET YA = YAA + 10
 9425   EXEC SKIFT
 9430   PRINT "X"
 9435   EXEC SKIFT
 9440   EXEC XINDEL
 9445 ENDPROC
 9450 PROC YAKSE
 9455   LET AKSE = 0 ; SS = 0
 9460   LET X = 0 ; Y = YMIN
 9465   EXEC HOP
 9470   LET AKSE = 1 ; XAA = XA ; YA = 790
 9475   EXEC LINIE
 9480   LET YA = 780 ; XA = XAA - 10
 9485   EXEC LINIE
 9490   LET XA = XAA + 10
 9495   EXEC LINIE
 9500   LET XA = XAA ; YA = 790
 9505   EXEC LINIE
 9510   LET XA = XAA + 15
 9515   EXEC HOP
 9520   EXEC SKIFT
 9525   PRINT "Y"
 9530   EXEC SKIFT
 9535   EXEC YINDEL
 9540 ENDPROC
 9545 PROC LINIE
 9550   IF SKIFT THEN EXEC SKIFT
 9555   EXEC TEGN
 9560 ENDPROC
 9565 PROC HOP
 9570   IF SKIFT THEN EXEC SKIFT
 9575   PRINT "<29>" ;
 9580   EXEC TEGN
 9585 ENDPROC
 9590 PROC TEGN
 9595   IF AKSE = 0 THEN
 9600     LET XA = SX * ( X - XMIN ) ; YA = SY * ( Y - YMIN )
 9605   ENDIF 
 9610   IF XA < 0 THEN LET XA = 0
 9615   IF XA > 1023 THEN LET XA = 1023
 9620   IF YA < 0 THEN LET YA = 0
 9625   IF YA > 800 THEN LET YA = 800
 9630   LET YH = YA DIV 32 + 32 ; YL = YA MOD 32 + 96
 9635   LET XH = XA DIV 32 + 32 ; XL = XA MOD 32 + 64
 9640   PRINT CHR ( YH ) ; CHR ( YL ) ;
 9645   PRINT CHR ( XH ) ; CHR ( XL ) ;
 9650 ENDPROC

UDAS Segment

    FNA definition = 0xffff
    FNB definition = 0xffff
    FNC definition = 0xffff
    FND definition = 0x02d1
    FNE definition = 0xffff
    FNF definition = 0xffff
    FNG definition = 0xffff
    FNH definition = 0xffff
    FNI definition = 0xffff
    FNJ definition = 0xffff
    FNK definition = 0xffff
    FNL definition = 0x02ea
    FNM definition = 0xffff
    FNN definition = 0xffff
    FNO definition = 0xffff
    FNP definition = 0x02bc
    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 = 0x0005
      stack[0] = 0x0251
      stack[1] = 0x04a3
      stack[2] = 0x06eb
      stack[3] = 0x06eb
      stack[4] = 0x04a3
      stack[5] = 0x0663
      stack[6] = 0x0507
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x0108
      Loop Top = 0x0301
      To Val = 2.50546e-76   (0x021d02e0)
      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 = 0x0000
      To Val = 0   (0x00000000)
      Step Val = 3.08853e-84   (0x00000006)
      Var# = 0x00be
      Loop Top = 0x06eb
      To Val = 25   (0x42190000)
      Step Val = 2   (0x41200000)
      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 0x02 SYRE$
    0x82 0x0012 0x02 LL$
    0x83 0x0057 0x02 T$
    0x84 0x0060 0x00 TITRAND
    0x85 0x0062 0x00 SYRE
    0x86 0x0064 0x00 BASE
    0x87 0xffff 0x00 TYPE
    0x88 0x0066 0x00 KA1
    0x89 0x0068 0x00 KA2
    0x8a 0x006a 0x00 SLUT
    0x8b 0x0074 0x00 VX
    0x8c 0x0076 0x00 VOL
    0x8d 0x0078 0x00 A
    0x8e 0x007a 0x00 TIT
    0x8f 0x007c 0x00 VTIT
    0x90 0xffff 0x00 DEFF
    0x91 0xffff 0x00 UDSKRIFT
    0x92 0xffff 0x00 CTOT
    0x93 0xffff 0x00 H
    0x94 0xffff 0x00 N
    0x95 0xffff 0x00 KOEF
    0x96 0xffff 0x00 ITERATOR
    0x97 0xffff 0x00 PH
    0x98 0xffff 0x00 DV
    0x99 0xffff 0x02 P$
    0x9a 0xffff 0x00 KW
    0x9b 0xffff 0x00 K1
    0x9c 0xffff 0x00 K2
    0x9d 0xffff 0x00 K3
    0x9e 0xffff 0x00 K4
    0x9f 0xffff 0x00 CTIT
    0xa0 0xffff 0x00 H1
    0xa1 0xffff 0x00 REL
    0xa2 0x0080 0x02 TITRATOR$
    0xa3 0xffff 0x02 L$
    0xa4 0xffff 0x00 M
    0xa5 0xffff 0x00 X
    0xa6 0xffff 0x00 Y
    0xa7 0xffff 0x00 HOP
    0xa8 0xffff 0x00 LINIE
    0xa9 0x006c 0x00 XMIN
    0xaa 0x006e 0x00 XMAX
    0xab 0x0070 0x00 YMIN
    0xac 0x0072 0x00 YMAX
    0xad 0xffff 0x00 SLET
    0xae 0xffff 0x00 COAKSE
    0xaf 0xffff 0x00 UDSKIFT
    0xb0 0x0085 0x00 SX
    0xb1 0x0087 0x00 SY
    0xb2 0x007e 0x00 SKIFT
    0xb3 0xffff 0x00 RAMME
    0xb4 0xffff 0x00 YAKSE
    0xb5 0xffff 0x00 XAKSE
    0xb6 0x0089 0x00 AKSE
    0xb7 0x008b 0x00 XA
    0xb8 0x008d 0x00 YA
    0xb9 0x0097 0x00 SS
    0xba 0x0099 0x00 YAA
    0xbb 0xffff 0x00 XINDEL
    0xbc 0xffff 0x00 XAA
    0xbd 0xffff 0x00 YINDEL
    0xbe 0x009b 0x00 I
    0xbf 0xffff 0x00 TEGN
    0xc0 0x008f 0x00 YH
    0xc1 0x0091 0x00 YL
    0xc2 0x0093 0x00 XH
    0xc3 0x0095 0x00 XL
    0xc4 0xffff 0x00 RUN20
    0xc5 0xffff 0x00 LIST9300
    0xc6 0xffff 0x00 O
    0xc7 0xffff 0x00 YM
    0xc8 0xffff 0x00 LIST300
    0xc9 0xffff 0x00 XXT

Wrapper

.magic = 0x4e32
.u_pas = 0x06eb  // Length of UPAS in words
.u_das = 0x0277  // Length of UDAS in words
.u_dvs = 0x01da  // Start på savede variabel indhold (word adr)
.u_nds = 0x0482  // Address på næste prog.sætning (word adr)
.u_cps = 0x0000  // Address på curr prog.sætning (word adr)
.u_tll = 0x0000  // 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)