|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 6656 (0x1a00) Types: COMAL_SAVE Names: »INTEG«
└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files └─⟦this⟧
SAVE filename: "INTEG" 0010 REM (+ HOVEDPROGRAM UDVIKLET AF IB OLSEN - 1982 +)«nul» 0020 PRINT "<27>AF" 0030 PRINT "<27><12>" 0040 DELAY = 1 0050 PRINT TAB ( 10 ) ; "*** NUMERISK LOESNING AF ***" 0060 PRINT TAB ( 10 ) ; "** DIFFERINTIALLIGNINGER **" 0070 PRINT 0080 PRINT 0090 PRINT "PROGRAMMET KAN LØSE OP TIL TI FORSKELLIGE FØRSTEORDENS DIFFE-" 0100 PRINT "RINTIALLIGNINGER AF NUMERISK VEJ. RESULTATET KOMMER UD SOM EN GRA-" 0110 PRINT "FISK MODEL, HVOR SAMTLIGE LIGNINGER VIL BLIVE AFBILDET SOM FUNKTION" 0120 PRINT "AF PARAMETEREN AF PRAKTISKE GRUNDE HEDDER PARAMETEREN " 0130 PRINT " -T- OG FUNKTIONSVAERDIEN V(1....10)" 0140 PRINT "EKSEMPEL: " 0150 PRINT " DX/DT = (A + BY)X" 0160 PRINT " DY/DT = (CX + D)Y" 0170 PRINT "BLIVER:" 0180 PRINT " D(1)=(A+B*V(2))*V(1) *DT" 0190 PRINT " D(2)=(C*V(1)+D)*V(2) *DT" 0200 PRINT 0210 DIM DIF$ ( 30 ) 0220 INPUT "TAST -RETURN- NAR DU ER KLAR PAA OVERSTAAENDE !!" , DIF$ 0230 PRINT "<27><12>" 0240 DELAY = 1 0250 INPUT "INDTAST ANTAL DIFFERINTIALLIGNINGER : " , NUMDIF 0255 EXEC START 0260 CREATE "GEM" , 0 0270 EXEC FILWORK 0280 FOR I = 1 TO NUMDIF 0290 ON ERR THEN GOTO 0330 0300 OPEN FILE ( 0 , 3 ) "GEM" 0310 OPEN FILE ( 0 , 3 ) "GEM" 0330 ON ERR THEN GOTO 0370 0340 PRINT "INDTAST D(" ; I ; ") = " ; 0350 INPUT "" , DIF$ 0355 READ FIR$ , NEX$ 0360 WRITE FILE ( 0 ) " " , FIR$ , "LET D(" , NEX$ , ")=" , DIF$ , "<13><10>" 0370 CLOSE 0380 ENTER "GEM" 0390 IF SYS ( 7 ) <> 42 THEN PRINT "DER ER FEJL I LIGNINGEN,. PROEV IGEN!" 0400 IF SYS ( 7 ) <> 42 THEN GOTO 0290 0410 PRINT "INDTAST STARTVAERDIEN FOR V(" ; I ; "): " ; 0420 INPUT "" , V ( I ) 0430 NEXT 0432 CLOSE 0434 DELETE "GEM" 0435 ON ERR THEN STOP «nul» 0440 DIM STEPV ( NUMDIF ) , MINV ( NUMDIF ) , A1 ( NUMDIF ) , A2 ( NUMDIF ) , A3 ( NUMDIF ) 0450 INPUT "INDTAST PARAMETEREMNS START- OG SLUT- VAERDI : " , TBEGIN , TEND 0460 LET DT = ( TEND - TBEGIN ) / 100 0470 FOR I = 1 TO NUMDIF 0480 LET VBEGIN ( I ) = V ( I ) 0490 NEXT 0500 FOR T = TBEGIN TO TEND STEP DT 0510 EXEC MODEL 0520 FOR I = 1 TO NUMDIF 0530 LET V ( I ) = V ( I ) + D ( I ) 0540 IF V ( I ) > A1 ( I ) THEN LET A1 ( I ) = V ( I ) 0550 IF V ( I ) < A2 ( I ) THEN LET A2 ( I ) = V ( I ) 0560 NEXT 0570 NEXT 0580 FOR I = 1 TO NUMDIF 0590 WHILE A1 ( I ) > 10 AND A2 ( I ) < - 10 DO 0600 LET A1 ( I ) = A1 ( I ) / 10 A2 ( I ) = A2 ( I ) / 10 A3 ( I ) = A3 ( I ) + 1 0610 ENDWHILE 0620 NEXT 0630 LET ST = A1 ( 1 ) MI = A2 ( 1 ) 0640 FOR I = 2 TO NUMDIF 0650 IF A1 ( I ) > ST THEN LET ST = A1 ( I ) 0660 IF A2 ( I ) < MI THEN LET MI = A2 ( I ) 0670 NEXT 0680 FOR I = 1 TO NUMDIF 0690 LET A1 ( I ) = INT ( ST + 1 ) * 10 ^ A3 ( I ) 0700 LET MINV ( I ) = INT ( MI ) * 10 ^ A3 ( I ) 0710 NEXT 0720 EXEC RESTART 0730 LET S = 700 / ( ST - MI ) 0740 FOR I = 1 TO NUMDIF 0750 LET X = 25 + ( I - 1 ) * 50 0760 CALL "GRAPH" , X , 60 0770 CALL "OUTVECT" , X , 760 0780 CALL "OUTVECT" , X + 4 , 756 0790 CALL "OUTVECT" , X - 4 , 756 0800 CALL "OUTVECT" , X , 760 0810 CALL "GRAPH" , X - 25 , 760 0820 CALL "ALPHA" 0830 PRINT A1 ( I ) 0840 FOR J = 760 - S TO 60 STEP - S 0850 CALL "GRAPH" , X - 4 , J 0860 CALL "OUTVECT" , X + 4 , J 0870 NEXT 0880 CALL "GRAPH" , X - 25 , 45 0890 CALL "ALPHA" 0900 PRINT MINV ( I ) 0910 CALL "GRAPH" , X - 25 , 20 0920 CALL "ALPHA" 0930 PRINT "V(" ; I ; ")" 0940 NEXT 0950 LET Y = 60 0960 IF MI < 0 THEN LET Y = - MI * S + 60 0970 CALL "GRAPH" , X + 25 , Y 0980 CALL "OUTVECT" , 1150 , Y 0990 CALL "OUTVECT" , 1146 , Y - 4 1000 CALL "OUTVECT" , 1146 , Y + 4 1010 CALL "OUTVECT" , 1150 , Y 1020 CALL "GRAPH" , 1155 , Y 1030 CALL "ALPHA" 1040 PRINT "T" 1050 CALL "GRAPH" , 1135 , Y - 15 1060 CALL "ALPHA" 1070 PRINT TEND 1080 LET S = ( 1125 - X ) / ( TEND - TBEGIN ) J = X + 25 1090 IF TBEGIN < 0 THEN 1100 LET MI = J - TBEGIN * S 1110 CALL "GRAPH" , M1 , Y - 4 1120 CALL "OUTVECT" , MI , Y + 4 1130 CALL "GRAPH" , MI - 2 , Y - 19 1140 CALL "ALPHA" 1150 PRINT "0" 1160 ENDIF 1180 FOR I = 1 TO NUMDIF 1190 LET STEPV ( I ) = 700 / ( A1 ( I ) - MINV ( I ) ) 1200 NEXT 1210 EXEC RUNMODEL 1220 FOR I = 1 TO NUMDIF 1230 CALL "GRAPH" , 1150 , ( V ( I ) - MINV ( I ) ) * STEPV ( I ) + 53 1240 CALL "ALPHA" 1250 PRINT "V(" ; I ; ")" 1260 NEXT 1270 PRINT "<27>AF" 1280 END «nul» 1300 PROC MODEL 1310 LET D ( 1 ) = SIN ( V ( 1 ) ) * DT 1320 REM (*D2*)«nul» 1330 REM (*D3*)«nul» 1340 REM (*D4*)«nul» 1350 REM (*D5*)«nul» 1360 REM (*D6*)«nul» 1370 REM (*D7*)«nul» 1380 REM (*D8*)«nul» 1390 REM (*D9*)«nul» 1400 REM (*D10*)«nul») 1410 ENDPROC 1500 PROC FILWORK 1510 DATA "1310" , "1" , "1320" , "2" , "1330" , "3" 1520 DATA "1340" , "4" , "1350" , "5" , "1360" , "6" 1530 DATA "1370" , "7" , "1380" , "8" , "1390" , "1400" , "9" , "1410" , "10" 1540 DIM FIR$ ( 4 ) , NEX$ ( 2 ) 1550 ENDPROC 2000 PROC REPORT 2010 FOR I = 1 TO NUMDIF 2020 LET X = ( TLAST - TBEGIN ) * S + J Y = ( VLAST ( I ) - MINV ( I ) ) * STEPV ( I ) + 60 2030 CALL "GRAPH" , X , Y 2040 LET X = ( T - TBEGIN ) * S + J Y = ( V ( I ) - MINV ( I ) ) * STEPV ( I ) + 60 2050 CALL "OUTVECT" , X , Y 2060 NEXT 2070 ENDPROC +++REPORT+++«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»
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 = 0x0001 stack[0] = 0x01ee stack[1] = 0x0302 stack[2] = 0x02f9 stack[3] = 0x02f9 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# = 0x0084 Loop Top = 0x0398 To Val = 1 (0x41100000) Step Val = 1 (0x41100000) Var# = 0x0084 Loop Top = 0x0302 To Val = 1 (0x41100000) Step Val = 1 (0x41100000) 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 DIF$ 0x82 0x0012 0x00 NUMDIF 0x83 0xffff 0x00 FILWORK 0x84 0xffff 0x00 I 0x85 0xffff 0x00 V 0x86 0xffff 0x00 STEPV 0x87 0xffff 0x00 MINV 0x88 0xffff 0x00 A1 0x89 0xffff 0x00 A2 0x8a 0xffff 0x00 A3 0x8b 0xffff 0x00 TBEGIN 0x8c 0xffff 0x00 TEND 0x8d 0xffff 0x00 REPINT 0x8e 0xffff 0x00 VBEGIN 0x8f 0xffff 0x00 T 0x90 0xffff 0x00 MODEL 0x91 0xffff 0x00 D 0x92 0xffff 0x00 ENDWHILW 0x93 0xffff 0x00 ST 0x94 0xffff 0x00 MI 0x95 0xffff 0x00 RESTART 0x96 0xffff 0x00 S 0x97 0xffff 0x00 X 0x98 0xffff 0x00 J 0x99 0xffff 0x00 Y 0x9a 0xffff 0x00 M1 0x9b 0xffff 0x00 RUNMODEL 0x9c 0xffff 0x00 REPORT 0x9d 0xffff 0x00 TLAST 0x9e 0xffff 0x00 VLAST 0x9f 0xffff 0x02 FIRST$ 0xa0 0xffff 0x02 FIR$ 0xa1 0xffff 0x02 NEX$ 0xa2 0xffff 0x00 ENDF 0xa3 0xffff 0x00 DT 0xa4 0xffff 0x00 LIDST 0xa5 0xffff 0x00 TT 0xa6 0xffff 0x00 START 0xa7 0xffff 0x00 ABSERROR 0xa8 0xffff 0x00 RELERROR 0xa9 0xffff 0x00 DTMIN 0xaa 0xffff 0x00 DTMAX 0xab 0xffff 0x00 RUNNO 0xac 0xffff 0x00 NEXTREP 0xad 0xffff 0x00 DTFULL 0xae 0xffff 0x00 STOPCOND 0xaf 0xffff 0x00 TNEXT 0xb0 0xffff 0x00 DLAST 0xb1 0xffff 0x00 TAKESTEP 0xb2 0xffff 0x00 ERRORACC 0xb3 0xffff 0x00 ERRORLOW 0xb4 0xffff 0x00 A4 0xb5 0xffff 0x00 A5 0xb6 0xffff 0x00 TEMP 0xb7 0xffff 0x00 DV 0xb8 0xffff 0x00 IERROR
.magic = 0x4e32 .u_pas = 0x0a82 // Length of UPAS in words .u_das = 0x0199 // Length of UDAS in words .u_dvs = 0x0185 // Start på savede variabel indhold (word adr) .u_nds = 0x0860 // Address på næste prog.sætning (word adr) .u_cps = 0x0851 // 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)