|
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)