|
|
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 - metrics - download
Length: 4512 (0x11a0)
Types: COMAL_SAVE
Notes: BASIC::CLPRG, CLPRG
Names: »CLPRG«
└─⟦714f3848e⟧ Bits:30006597 ALM Copy 24.9.79
└─⟦this⟧ »BASIC::CLPRG«
SAVE filename: "CLPRG" 0010 REM CB 12.11 - 15.11.79 «so»LAGERANALYSE M. PS ... "CLPRG"«nul» 0020 REM K231SLUT«nul» 0030 PROC RADIX 0040 FOR II = 4 + ( RA = 10 ) TO 1 STEP - 1 0050 LET RAD$ ( II ) = CHR ( RA0 MOD RA + ( RA0 MOD RA > 9 ) * 7 + 48 - 16 * ( SP = 1 ) * ( RA0 = 0 ) ) RA0 = RA0 DIV RA 0060 NEXT 0070 ENDPROC 0080 PROC FIND 0090 LET MIN = 1 MAX = EA * ( \ = 1 ) + PA * ( \ = 2 ) MIDT = MAX * ( ] > ADR ( \ , 1 ) ) DIV ( 2 - ( ] >= ADR ( \ , MAX ) ) ) JUMP = 0 0100 IF ] <= ADR ( \ , 1 ) OR ] >= ADR ( \ , MAX ) THEN GOTO 0140 0110 WHILE ADR ( \ , MIDT ) >= ] OR ADR ( \ , MIDT + 1 ) < ] DO 0120 LET W = ( ] > ADR ( \ , MIDT ) ) S = NOT W MIN = MIN * S + MIDT * W MAX = MAX * W + MIDT * S MIDT = ( MIN + MAX ) DIV 2 0130 ENDWHILE 0140 IF ADR ( \ , MIDT + 1 ) <> ] THEN GOTO 0170 0150 READ FILE ( \ - 1 , MIDT + 1 ) S , UD$ 0160 LET JUMP = 1 UD$ = UD$ ( 1 , 5 + ( \ = 2 ) * ( LEN ( UD$ ) - 5 ) ) 0170 ENDPROC 0180 PROC OVERSKRI 0190 LET UDSKRIFT$ = "<13>" , CHR ( 10 + 2 * ( XX * 256 = X ) ) RA = 16 SP = 0 0200 FOR Y = 0 TO 3 0210 LET RA0 = X + 64 * Y UD ( Y + 1 ) = RA0 S = RA0 - 1 + ( RA0 = 0 ) 0220 IF X = XX * 256 THEN CALL "GMEM" , S , S 0230 IF X = XX * 256 THEN LET CA ( Y + 1 ) = ( S = 3232 ) 0240 EXEC RADIX 0250 LET UDSKRIFT$ = UDSKRIFT$ , " ##### " , RAD$ ( 1 , 4 ) , " " UDSKRIFT$ = UDSKRIFT$ ( 1 , 128 ) 0260 NEXT 0270 LET UDSKRIFT$ ( 64 , 63 + LEN ( DAT$ ) ) = DAT$ 0280 IF X = XX * 256 THEN LET UDSKRIFT$ ( 3 , 7 ) = "(###)" UDSKRIFT$ ( 124 , 128 ) = "(###)" 0290 IF X = XX * 256 THEN PRINT UDSKRIFT$ , XX , UD ( 1 ) , UD ( 2 ) , UD ( 3 ) , UD ( 4 ) , XX 0300 IF X = XX * 256 + 32 THEN PRINT UDSKRIFT$ , UD ( 1 ) , UD ( 2 ) , UD ( 3 ) , UD ( 4 ) 0310 PRINT 0320 ENDPROC 0330 REM MAINPROC START LAGERUD // CB 12.11.79«nul» 0340 CLOSE 0350 PAGE = 0 0360 DIM DAT$ ( 8 ) 0370 DIM UD$ ( 15 ) , UDSKRIFT$ ( 132 ) , UDSK$ ( 13 ) , P$ ( 3 ) , T$ ( 12 , 8 ) , HJ[LP$ ( 10 ) , RAD$ ( 5 ) 0380 DIM CA ( 4 ) , PIL ( 4 ) , PIL$ ( 4 , 5 ) , POS ( 4 ) , UD ( 4 ) , ADR ( 2 , 280 ) 0390 DEF FNB ( VAR98 ) = ABS ( S ) MOD 10 ^ [LVAR] DIV 10 ^ ( [LVAR] - 1 ) + 48 - 16 * ( ABS ( S ) DIV 10 ^ ( [LVAR] - 1 ) = 0 ) * ( [LVAR] <> 1 ) 0400 LET EA = 279 PA = 138 RAD$ = " " UDSK$ = " " 0410 OPEN FILE ( 0 , 4 ) "CO10.ENT" 0420 OPEN FILE ( 1 , 4 ) "CO...PSE" 0430 OPEN FILE ( 3 , 4 ) "CO...STA" 0440 OPEN FILE ( 4 , 4 ) "CO...USE" 0450 FOR S = 1 TO EA 0460 READ FILE ( 0 , S ) ADR ( 1 , S ) 0470 IF S <= PA THEN READ FILE ( 1 , S ) ADR ( 2 , S ) 0480 IF S <= 12 THEN READ T$ ( S ) 0490 NEXT 0500 DATA " ZOC" , " LRS" , " SCP" , "BNBZDNDZ" , " " , ",SKP" , ",SZC" , ",SNC" , ",SZR" , ",SNR" , ",SEZ" , ",SBN" 0510 INPUT " DD/MM-ÅÅ<13>DATO " , DAT$ 0520 REM «nul» 0530 INPUT "FRA SIDE : " , STS , " TIL SIDE : " , SLS 0540 LET POS ( 4 ) = 1 0550 REM «ff» «nul» 0560 REM «so»PAGE 2«nul» 0570 FOR XX = STS TO SLS 0580 FOR S = 1 TO 4 0590 LET POS ( S ) = POS ( 4 ) - 1 0600 REPEAT 0610 LET POS ( S ) = POS ( S ) + 1 0620 UNTIL ADR ( 1 , POS ( S ) ) > XX * 256 + ( S - 1 ) * 64 0630 READ FILE ( 0 , POS ( S ) ) PIL ( S ) , PIL$ ( S ) 0640 NEXT 0650 FOR X = XX * 256 TO XX * 256 + 63 0660 IF X MOD 32 = 0 THEN EXEC OVERSKRI 0670 LET UDSKRIFT$ = "" 0680 FOR Y = 1 TO 4 0690 LET ADRR = X + ( Y - 1 ) * 64 JUMP = 0 P$ = " ! " 0700 CALL "GMEM" , ADRR , B 0710 LET B1 = B DIV 256 B2 = B MOD 256 SP = 0 RA = 16 RA0 = B 0720 EXEC RADIX 0730 LET UDSK$ ( 10 , 13 ) = RAD$ 0740 IF ADRR <> PIL ( Y ) THEN 0750 LET SP = 1 RA = 10 RA0 = B 0760 EXEC RADIX 0770 LET UDSK$ ( 1 , 8 ) = CHR ( ADRR MOD 100 DIV 10 + 48 ) , CHR ( ADRR MOD 10 + 48 ) , " " , RAD$ 0780 ENDIF 0790 WHILE ADRR = PIL ( Y ) DO 0800 LET UDSK$ ( 1 , 5 ) = PIL$ ( Y ) UDSK$ ( 6 , 8 ) = " " POS ( Y ) = POS ( Y ) + 1 0810 READ FILE ( 0 , POS ( Y ) ) PIL ( Y ) , PIL$ ( Y ) 0820 ENDWHILE 0830 IF CA ( Y ) THEN 0840 LET \ = 1 ] = B 0850 EXEC FIND 0860 ENDIF 0870 IF NOT ( JUMP = 0 AND CA ( Y ) OR B < 256 OR ADRR < 311 ) THEN GOTO 0910 0880 LET JUMP = 1 SP = ( B < 256 OR ADRR < 311 ) RA = 10 RA0 = B 0890 EXEC RADIX 0900 LET UD$ = RAD$ 0910 LET CA ( Y ) = ( B = 3232 ) \ = 2 ] = B 0920 IF JUMP THEN GOTO 1140 0930 EXEC FIND 0940 IF JUMP THEN GOTO 1140 0950 REM ALMEN OVERSÆTTELSE«nul» 0960 READ FILE ( 3 , B1 + 1 ) UD$ 0970 IF UD$ = "FEJL" THEN GOTO 0880 0980 IF B1 > 127 THEN 0990 LET UD$ ( 4 ) = T$ ( 1 , B MOD 64 DIV 16 + 1 ) UD$ ( 4 + ( UD$ ( 4 ) <> " " ) ) = T$ ( 2 , B2 DIV 64 + 1 ) 1000 LET UD$ ( 11 , 14 ) = T$ ( B MOD 8 + 5 ) UD$ ( 6 ) = CHR ( 32 + B MOD 16 DIV 8 * 3 ) 1010 ELSE 1020 IF B1 > 95 THEN 1030 IF UD$ ( 1 ) <> "S" THEN LET S = B2 MOD 64 UD$ ( 4 ) = T$ ( 3 , B2 DIV 64 + 1 ) UD$ ( 10 , 11 ) = CHR ( FNB ( 2 ) ) , CHR ( FNB ( 1 ) ) 1040 IF UD$ ( 1 ) = "S" THEN LET S = B2 MOD 64 UD$ ( 4 , 5 ) = T$ ( 4 , ( B2 DIV 64 ) * 2 + 1 , ( B2 DIV 64 ) * 2 + 2 ) 1050 IF UD$ ( 1 ) = "S" OR UD$ ( 1 ) = "N" THEN LET UD$ ( 8 , 15 ) = CHR ( FNB ( 2 ) ) , CHR ( FNB ( 1 ) ) , " " 1060 ELSE 1070 LET S = B2 - ( B MOD 1024 DIV 256 <> 0 ) * ( B2 > 127 ) * 256 LS = 2 * ( B1 DIV 32 <> 0 ) 1080 LET UD$ ( 8 + LS , 11 + LS ) = CHR ( 43 + 2 * ( S < 0 ) ) , CHR ( FNB ( 3 ) ) , CHR ( FNB ( 2 ) ) , CHR ( FNB ( 1 ) ) 1090 IF B1 < 8 OR S < 11 OR S > 111 OR B MOD 1024 DIV 256 <> 3 OR ADRR < 4012 THEN GOTO 1120 1100 READ FILE ( 4 , S ) HJ[LP$ 1110 LET UD$ ( 8 + LS , 15 ) = HJ[LP$ , " " 1120 ENDIF 1130 ENDIF 1140 IF B1 > 64 AND B1 < 95 THEN LET P$ ( 1 ) = CHR ( B1 ) 1150 IF B1 > 64 AND B1 < 95 AND B2 > 47 AND B2 < 95 THEN LET P$ ( 2 ) = CHR ( B2 ) 1160 LET UD$ = UD$ , " " UDSKRIFT$ = UDSKRIFT$ , UDSK$ , " " , UD$ , " " , P$ 1170 NEXT 1180 PRINT UDSKRIFT$ 1190 NEXT 1200 NEXT 1210 GOTO 0530
FNA definition = 0x0000
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# = 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)
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 0x0000 0x00
0x81 0xffff 0x00 OVERSKRI
0x82 0xffff 0x02 UDSKRIFT$
0x83 0xffff 0x00 XX
0x84 0xffff 0x00 X
0x85 0xffff 0x00 RA
0x86 0xffff 0x00 SP
0x87 0xffff 0x00 Y
0x88 0xffff 0x00 RA0
0x89 0xffff 0x00 UD
0x8a 0xffff 0x00 S
0x8b 0xffff 0x00 CA
0x8c 0xffff 0x00 RADIX
0x8d 0xffff 0x02 RAD$
0x8e 0xffff 0x02 DAT$
0x8f 0xffff 0x00 II
0x90 0xffff 0x00 FIND
0x91 0xffff 0x00 MIN
0x92 0xffff 0x00 MAX
0x93 0xffff 0x00 EA
0x94 0xffff 0x00 \
0x95 0xffff 0x00 PA
0x96 0xffff 0x00 MIDT
0x97 0xffff 0x00 ]
0x98 0xffff 0x00 ADR
0x99 0xffff 0x00 JUMP
0x9a 0xffff 0x00 W
0x9b 0xffff 0x02 UD$
0x9c 0xffff 0x02 UDSK$
0x9d 0xffff 0x02 P$
0x9e 0xffff 0x02 T$
0x9f 0xffff 0x02 HJ[LP$
0xa0 0xffff 0x00 PIL
0xa1 0xffff 0x02 PIL$
0xa2 0xffff 0x00 POS
0xa3 0xffff 0x00 STS
0xa4 0xffff 0x00 SLS
0xa5 0xffff 0x00 ADRR
0xa6 0xffff 0x00 B
0xa7 0xffff 0x00 B1
0xa8 0xffff 0x00 B2
0xa9 0xffff 0x00 LS
0xaa 0xffff 0x00 LOOJUP
.magic = 0x5356 .u_pas = 0x0782 // Length of UPAS in words .u_das = 0x013f // Length of UDAS in words .u_dvs = 0x013f // Start på savede variabel indhold (word adr) .u_nds = 0x0000 // Address på næste prog.sætning (word adr) .u_cps = 0x0000 // Address på curr prog.sætning (word adr) .u_tll = 0x0048 // Page størrelse .u_tts = 0x000e // TAP størrelse .u_ran = 0x0000 // Random tal .u_cdl = 0x0042 // Current DATA sætning ptr .u_cdb = 0x0000 // Current DATA byte ptr .u_esa = 0xffff // ON ESE (word adr) .u_era = 0xffff // ON ERR (word adr) .u_cas = 0x0000 // CASE dybde .u_las = 0xffff // last (-1)