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

⟦26d6aac09⟧ COMAL_SAVE

    Length: 3532 (0xdcc)
    Types: COMAL_SAVE

Derivation

└─⟦3d9d2c4f1⟧ Bits:30001780 SG0000 Floppy
    └─ ⟦e44f204cd⟧ »/TITRB « 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "TITRB"

 0010 REM  «so»  *** T I T R E R - B ***       ØH OKT.79«nul»
 0020 PAGE = 0
 0030 REM  TITRERING AF 10 ML 0.1M SYRER/BASE MED 0.1M NAOH/HCL«nul»
 0040 REM  SYREN/BASEN KAN VÆRE  DI - ELLER MONOVALENT (pKüü70)«nul»
 0050 REM  FOR BASER BEREGNES OH LIGESOM H FOR SYRER.«nul»
 0060 REM  DER ANVENDES NEWTON-RAPHSON ITERATION«nul»R
 0070 DIM SYRE$ ( 30 ) , LL$ ( 132 ) , T$ ( 12 )
 0080 INPUT "TITRERING AF SYRER(1) ELLER BASE(2) " , TITRAND
 0090 IF TITRAND <> 1 AND TITRAND <> 2 THEN GOTO 0080
 0100 LET SYRE = 1 ; BASE = 2
 0110 INPUT "ØNSKES GRAFUDSKRIFT (1) ELLER TABELUDSKRIFT (2)  " , TYPE
 0120 REPEAT 
 0130   IF TITRAND = SYRE THEN
 0140     INPUT "SYRENS NAVN           " , SYRE$
 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   LET KA1 = 10 ^ ( - KA1 ) ; KA2 = 10 ^ ( - KA2 )
 0200 UNTIL KA1 > KA2 AND KA2 >= 0
 0210 REM  ÆKVIVALENS-PUNKTER VED 10 OG 20 ML. SLUT +5 ML.«nul» 
 0220 LET SLUT = 25
 0230 IF KA2 = 0 THEN LET SLUT = 15
 0240 REM  DER TITSÆTTES EKSTRA VAND. MÆNGDE ANGIVES I M.MOL«nul»
 0250 INPUT "KONDITIONELT EKSTRAVOLUMEN VX : " , VX
 0260 IF VX < 0 THEN GOTO 0250
 0270 LET VOL = 10 + VX ; A = 1 ; TIT = 0 ; VTIT = 0
 0280 LET LL$ = "-------------------------------------------------------------"
 0290 LET T$ = "  ##.### "
 0300 EXEC DEFF
 0310 EXEC UDSKRIFT
 0320 LET CTOT = A / VOL ; H = SQR ( CTOT * KA1 ) ; N = 0
 0330 IF KA1 > 100 THEN LET H = CTOT
 0340 IF TYPE = 2 THEN GOTO 0910
 0350 REPEAT 
 0360   EXEC KOEF
 0370   EXEC ITERATOR
 0380   LET PH = - FNL ( H )
 0390   IF TITRAND = BASE THEN LET PH = 14 - PH
 0400   LET LL$ = "I        !         !         !         !         !         !         !         !         !         !         !         !"
 0410   IF VTIT = INT ( VTIT ) THEN PRINT ".." ; VTIT ; "ML..." ; CHR ( 13 ) ;
 0420   IF VTIT DIV 2 = VTIT / 2 THEN
 0430     LET LL$ = "I      ..!.........!.........!.........!.........!.........!.........!.........!.........!.........!.........!.........!"
 0440   ENDIF 
 0450   LET LL$ ( INT ( PH * 10 ) + 1 ) = "*"
 0460   PRINT LL$
 0470   LET DV = 1 / 4 ; N = N + 1
 0480   LET VTIT = VTIT + DV ; TIT = 0.1 * VTIT ; VOL = VOL + DV
 0490 UNTIL VTIT > SLUT
 0500 PRINT P$
 0510 STOP «nul» 
 0520 PROC DEFF
 0530   LET KW = 1e-14
 0540   DEF FNP ( VAR88 ) = [LVAR]  ^ 4 + K1 * [LVAR]  ^ 3 + K2 * [LVAR]  ^ 2 + K3 * [LVAR]  + K4
 0550   DEF FND ( VAR88 ) = 4 * [LVAR]  ^ 3 + 3 * K1 * [LVAR]  ^ 2 + 2 * K2 * [LVAR]  + K3
 0560   DEF FNL ( VAR98 ) = LOG ( [LVAR]  ) / LOG ( 10 )
 0570 ENDPROC
 0580 PROC KOEF
 0590   LET CTIT = TIT / VOL ; CTOT = A / VOL ; K1 = CTIT + KA1
 0600   LET K2 = KA1 * KA2 - KA1 * CTOT + KA1 * CTIT - KW
 0610   LET K3 = - 2 * KA1 * KA2 * CTOT + KA1 * KA2 * CTIT - KA1 * KW
 0620   LET K4 = - KA1 * KA2 * KW
 0630 ENDPROC
 0640 PROC ITERATOR
 0650   REPEAT 
 0660     IF H = 0 THEN LET H = 1e-20
 0670     LET H1 = H - FNP ( H ) / FND ( H ) ; REL = ABS ( ( H1 - H ) / H ) ; H = H1
 0680   UNTIL REL < 0.01
 0690 ENDPROC
 0700 PROC UDSKRIFT
 0710   DIM TITRATOR$ ( 4 )
 0720   IF TITRAND = SYRE THEN LET TITRATOR$ = "NAOH"
 0730   IF TITRAND = BASE THEN LET TITRATOR$ = "HCL"
 0740   PRINT "<12><14> **TITRERING AF 10 ML 0,1M " ; SYRE$ ; " MED 0,1M " ; TITRATOR$ ; " **"
 0750   PRINT
 0760   PRINT "PK1 = ###.##  ,  PK2 = ###.## " , - FNL ( KA1 ) , - FNL ( KA2 )
 0770   PRINT " KONDITIONELT EKSTRAVOLUMEN " ; VX ; " ML"
 0780   PRINT
 0790   DIM P$ ( 132 ) , L$ ( 132 )
 0800   LET L$ = "I........1.........2.........3.........4.........5.........6.........7"
 0810   LET P$ = L$ , ".........8.........9.........10........11........12.....PH--->"
 0820   IF TYPE = 1 THEN PRINT P$
 0830   IF TYPE = 2 THEN
 0840     PRINT " PH ER ANGIVET SOM FUNKTION AF TILSAT ANTAL ML TITRATOR"
 0850     PRINT LL$
 0860     PRINT
 0870     PRINT "  ##.#   " , " ML" , 0 , 0.2 , 0.4 , 0.6 , 0.8
 0880     PRINT LL$
 0890   ENDIF 
 0900 ENDPROC
 0910 LET M = 0 ; T$ = "  ##.### "
 0920 REPEAT 
 0930   EXEC KOEF
 0940   EXEC ITERATOR
 0950   LET PH = - FNL ( H )
 0960   IF TITRAND = BASE THEN LET PH = 14 - PH
 0970   IF M = 0 THEN PRINT "  ##.#   " , VTIT ;
 0980   PRINT T$ , PH ;
 0990   LET DV = 0.2 ; N = N + 1 ; M = M + 1
 1000   IF M MOD 5 = 0 THEN PRINT
 1010   IF N MOD 25 = 0 THEN PRINT LL$
 1020   LET VTIT = VTIT + DV ; TIT = 0.1 * VTIT ; VOL = VOL + DV
 1030   IF M MOD 5 = 0 THEN LET M = 0
 1040 UNTIL VTIT >= SLUT - DV
 1050 PRINT
 1060 PRINT LL$
 1070 PRINT " BEREGNING UDFØRT D. ## ##/19## ." , SYS ( 1 ) , SYS ( 2 ) , SYS ( 3 )
 1080 END «nul»

UDAS Segment

    FNA definition = 0xffff
    FNB definition = 0xffff
    FNC definition = 0xffff
    FND definition = 0x036e
    FNE definition = 0xffff
    FNF definition = 0xffff
    FNG definition = 0xffff
    FNH definition = 0xffff
    FNI definition = 0xffff
    FNJ definition = 0xffff
    FNK definition = 0xffff
    FNL definition = 0x0387
    FNM definition = 0xffff
    FNN definition = 0xffff
    FNO definition = 0xffff
    FNP definition = 0x0359
    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] = 0x0526
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x0520
      Loop Top = 0x03c9
      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 0xffff 0x00 
    0x81 0xffff 0x02 SYRE$
    0x82 0xffff 0x02 LL$
    0x83 0xffff 0x02 T$
    0x84 0xffff 0x00 TITRAND
    0x85 0xffff 0x00 SYRE
    0x86 0xffff 0x00 BASE
    0x87 0xffff 0x00 TYPE
    0x88 0xffff 0x00 KA1
    0x89 0xffff 0x00 KA2
    0x8a 0xffff 0x00 SLUT
    0x8b 0xffff 0x00 VX
    0x8c 0xffff 0x00 VOL
    0x8d 0xffff 0x00 A
    0x8e 0xffff 0x00 TIT
    0x8f 0xffff 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 0xffff 0x02 TITRATOR$
    0xa3 0xffff 0x02 L$
    0xa4 0xffff 0x00 M

Wrapper

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