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

⟦c07ba45e4⟧ COMAL_SAVE

    Length: 3288 (0xcd8)
    Types: COMAL_SAVE

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦89b7f3556⟧ »/IB2« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "IB2"

 0010 LET NUMDIF = 2
 0020 EXEC START
 0030 PROC MODEL
 0040   LET D ( 1 ) = V ( 2 )
 0050   LET D ( 2 ) = - G - K * V ( 2 ) * ABS ( V ( 2 ) )
 0060   LET STOPCOND = V ( 1 ) < 0
 0070 ENDPROC
 0080 LET G = 9.8 ; K = 0.01
 0090 LET V ( 1 ) = 0 ; V ( 2 ) = 50
 0100 LET TEND = 1e+10 ; DTMIN = 1e-05 ; DTMAX = 1
 0110 EXEC RUNMODEL
 0120 PRINT "TID INDEN LANDIND : " ; T ; "SEK."
 0130 END «nul»
 9000 PROC RUNMODEL
 9001   IF TBEGIN >= TEND THEN
 9002     PRINT "ERROR:  START-VAERDIEN ER  STOERRE END SLUT-VAERDIEN"
 9003     STOP «nul»4 
 9004   ENDIF 
 9005   LET ABSERROR = ABS ( ABSERROR ) ; RELERROR = ABS ( RELERROR )
 9006   LET DTMIN = ABS ( DTMIN ) ; DTMAX = ABS ( DTMAX ) ; DT = ABS ( DT )
 9007   IF DTMAX = 0 THEN LET DTMAX = TEND - TBEGIN
 9008   IF DT = 0 THEN LET DT = DTMAX / 100
 9009   IF DT > DTMAX THEN LET DT = DTMAX
 9010   IF DTMIN = 0 THEN LET DTMIN = DT / 1000
 9011   IF DT < DTMIN THEN LET DTMIN = DT
 9012   IF RUNNO = 1 THEN
 9013     LET T = TBEGIN ; NEXTREP = TBEGIN
 9014     FOR I = 1 TO NUMDIF
 9015       LET VBEGIN ( I ) = V ( I )
 9016     NEXT 
 9017   ELSE 
 9018     IF T >= TEND THEN EXEC RESTART
 9019   ENDIF 
 9020   LET DTFULL = DT ; STOPCOND = 0
 9021   EXEC MODEL
 9022   IF ( REPINT > 0 AND NEXTREP = T ) OR REPINT = 0 THEN
 9023     EXEC REPORT
 9024     LET NEXTREP = T + REPINT
 9025   ENDIF 
 9026   IF T >= TEND OR STOPCOND THEN GOTO 9055
 9027   LET TLAST = T ; DT = DTFULL ; TNEXT = TLAST + DT
 9028   IF TNEXT > TEND THEN
 9029     LET TNEXT = TEND ; DT = TNEXT - TLAST
 9030   ELSE 
 9031     IF TNEXT > NEXTREP AND REPINT > 0 THEN
 9032       LET TNEXT = NEXTREP ; DT = TNEXT - TLAST
 9033     ENDIF 
 9034   ENDIF 
 9035   FOR I = 1 TO NUMDIF
 9036     LET VLAST ( I ) = V ( I ) ; DLAST ( I ) = D ( I )
 9037   NEXT 
 9038   EXEC TAKESTEP
 9039   WHILE NOT ERRORACC OR ( STOPCOND AND DT > DTMIN ) DO
 9040     IF DT <= DTMIN THEN
 9041       PRINT "ERROR: THE REQUESTED INTEGRATION ACCURACY"
 9042       PRINT "       CAN NOT BE ACHIEVED"
 9043       STOP «nul» 
 9044     ENDIF 
 9045     LET DT = DT / 2
 9046     IF DT < DTMIN THEN LET DT = DTMIN
 9047     LET DTFULL = DT ; TNEXT = TLAST + DT
 9048     EXEC TAKESTEP
 9049   ENDWHILE
 9050   IF ERRORLOW AND DT < DTMAX AND DT = DTFULL THEN
 9051     LET DTFULL = 2 * DTFULL
 9052     IF DTFULL > DTMAX THEN LET DTFULL = DTMAX
 9053   ENDIF 
 9054   GOTO 9022
 9055   LET RUNNO = RUNNO + 1 ; DT = DTFULL
 9056   IF REPINT < 0 THEN LET NEXTREP = TEND
 9057 ENDPROC ** KRUNMODEL ***«nul» 
 9058 PROC START
 9059   DIM V ( NUMDIF ) , D ( NUMDIF ) , VLAST ( NUMDIF ) , DLAST ( NUMDIF ) , VBEGIN ( NUMDIF )
 9060   LET RUNNO = 1 ; DT = 0 ; DTMIN = 0 ; DTMAX = 0 ; TBEGIN = 0 ; TEND = 0 ; REPINT = - 1
 9061   LET ABSERROR = 0 ; RELERROR = 0.0001 ; ERRORACC = 1 ; ERRORLOW = 0
 9062 ENDPROC ** START ***«nul»
 9063 PROC RESTART
 9064   LET T = TBEGIN ; NEXTREP = TBEGIN
 9065   FOR I = 1 TO NUMDIF
 9066     LET V ( I ) = VBEGIN ( I )
 9067   NEXT 
 9068 ENDPROC ** RESTART ***«nul»
 9500 PROC TAKESTEP
 9501   DIM A1 ( NUMDIF ) , A2 ( NUMDIF ) , A3 ( NUMDIF ) , A4 ( NUMDIF ) , A5 ( NUMDIF )
 9502   FOR I = 1 TO NUMDIF
 9503     LET TEMP = DT * DLAST ( I ) ; A1 ( I ) = TEMP
 9504     LET V ( I ) = VLAST ( I ) + 0.25 * TEMP
 9505   NEXT 
 9506   LET T = TLAST + 0.25 * DT
 9507   EXEC MODEL
 9508   FOR I = 1 TO NUMDIF
 9509     LET TEMP = DT * D ( I ) ; A2 ( I ) = TEMP
 9510     LET V ( I ) = VLAST ( I ) + ( 0.09375 * A1 ( I ) + 0.28125 * TEMP )
 9511   NEXT 
 9512   LET T = TLAST + 0.375 * DT
 9513   EXEC MODEL
 9514   FOR I = 1 TO NUMDIF
 9515     LET TEMP = DT * D ( I ) ; A3 ( I ) = TEMP
 9516     LET V ( I ) = VLAST ( I ) + ( 0.879381 * A1 ( I ) - 3.2772 * A2 ( I ) + 3.32089 * TEMP )
 9517   NEXT 
 9518   LET T = TLAST + 0.923077 * DT
 9519   EXEC MODEL
 9520   FOR I = 1 TO NUMDIF
 9521     LET TEMP = DT * D ( I ) ; A4 ( I ) = TEMP
 9522     LET DV = 2.03241 * A1 ( I ) - 8 * A2 ( I ) + 7.17349 * A3 ( I ) - 0.205897 * TEMP
 9523     LET V ( I ) = VLAST ( I ) + DV
 9524   NEXT 
 9525   LET T = TLAST + DT
 9526   EXEC MODEL
 9527   FOR I = 1 TO NUMDIF
 9528     LET TEMP = DT * D ( I ) ; A5 ( I ) = TEMP
 9529     LET DV = - 0.296296 * A1 ( I ) + 2 * A2 ( I ) - 1.38168 * A3 ( 1 )
 9530     LET V ( I ) = VLAST ( I ) + ( DV + 0.452973 * A4 ( I ) - 0.275 * TEMP )
 9531   NEXT 
 9532   LET T = TLAST + 0.5 * DT
 9533   EXEC MODEL
 9534   LET I = 1 ; ERRORACC = 1 ; ERRORLOW = 1
 9535   WHILE I <= NUMDIF AND ERRORACC DO
 9536     LET DV = 0.00277778 * A1 ( I ) - 0.0299415 * A3 ( I ) - 0.0291999 * A4 ( I )
 9537     LET IERROR = DV + 0.02 * A5 ( I ) + 0.0363636 * DT * D ( I )
 9538     LET DV = 0.115741 * A1 ( I ) + 0.548928 * A3 ( I ) + 0.535331 * A4 ( I ) - 0.2 * A5 ( I )
 9539     LET V ( I ) = VLAST ( I ) + DV + IERROR
 9540     LET TEMP = ABSERROR + RELERROR * ABS ( V ( I ) ) ; IERROR = ABS ( IERROR )
 9541     LET ERRORACC = IERROR <= TEMP ; ERRORLOW = ERRORLOW AND IERROR < 0.02 * TEMP
 9542     LET I = I + 1
 9543   ENDWHILE
 9544   LET T = TNEXT
 9545   EXEC MODEL
 9546 ENDPROC ** TAKESTEP ***«nul»

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 = 0x0003
      stack[0] = 0x00ab
      stack[1] = 0x01c7
      stack[2] = 0x0302
      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 = 1.55108e-74   (0x04070407)
      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 = 0   (0x00000000)
      Var# = 0x008c
      Loop Top = 0x02d5
      To Val = 2   (0x41200000)
      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 RUNMODEL
    0x82 0x0037 0x00 TBEGIN
    0x83 0x0039 0x00 TEND
    0x84 0x003d 0x00 ABSERROR
    0x85 0x003f 0x00 RELERROR
    0x86 0x0033 0x00 DTMIN
    0x87 0x0035 0x00 DTMAX
    0x88 0x0031 0x00 DT
    0x89 0x002f 0x00 RUNNO
    0x8a 0x0049 0x00 T
    0x8b 0x004b 0x00 NEXTREP
    0x8c 0x004d 0x00 I
    0x8d 0x0000 0x00 NUMDIF
    0x8e 0x0026 0x01 VBEGIN
    0x8f 0x0002 0x01 V
    0x90 0xffff 0x00 RESTART
    0x91 0xffff 0x00 DTTFULL
    0x92 0x0051 0x00 STOPCOND
    0x93 0xffff 0x00 MODEL
    0x94 0x003b 0x00 REPINT
    0x95 0xffff 0x00 REPORT
    0x96 0x0053 0x00 TLAST
    0x97 0x004f 0x00 DTFULL
    0x98 0x0055 0x00 TNEXT
    0x99 0x0014 0x01 VLAST
    0x9a 0x001d 0x01 DLAST
    0x9b 0x000b 0x01 D
    0x9c 0xffff 0x00 TAKESTEP
    0x9d 0x0041 0x00 ERRORACC
    0x9e 0x0043 0x00 ERRORLOW
    0x9f 0xffff 0x00 ENDIG
    0xa0 0xffff 0x00 START
    0xa1 0x0057 0x01 A1
    0xa2 0x0060 0x01 A2
    0xa3 0x0069 0x01 A3
    0xa4 0x0072 0x01 A4
    0xa5 0x007b 0x01 A5
    0xa6 0x0084 0x00 TEMP
    0xa7 0xffff 0x00 DV
    0xa8 0xffff 0x00 IERROR
    0xa9 0xffff 0x00 VLLAST
    0xaa 0x0045 0x00 G
    0xab 0x0047 0x00 K
    0xac 0xffff 0x00 IEERO

Wrapper

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