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

⟦b6c93ca1d⟧ COMAL_SAVE

    Length: 5668 (0x1624)
    Types: COMAL_SAVE

Derivation

└─⟦466f46364⟧ Bits:30001785 SG0005 Floppy
    └─ ⟦03dca05a3⟧ »/REP02« 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "REP02"

 0010 PROC READFI
 0020   IF B THEN
 0030     READ FILE ( 1 ) A
 0040     CALL "FIX" , A , C , D
 0050     LET A = C DIV 256 + 256 * ( C MOD 256 ) ; B = 0
 0060   ELSE 
 0070     LET A = D DIV 256 + 256 * ( D MOD 256 ) ; B = 1
 0080   ENDIF 
 0090 ENDPROC
 0100 PROC ADRUD
 0110   IF A DIV 256 MOD 4 = 1 THEN
 0120     PRINT "#####" , ADR + A MOD 256 - 256 * ( A DIV 128 MOD 2 ) - 1 ; A$ ;
 0130   ELSE 
 0140     PRINT CHR ( 32 + ( A DIV 256 MOD 4 <> 0 ) * ( 11 + 2 * ( A DIV 128 MOD 2 ) ) ) ;
 0150     PRINT "###" , A MOD 256 - 256 * ( ( A DIV 128 MOD 2 ) AND ( A DIV 256 MOD 4 ) ) ; "," ; CHR ( 48 + A DIV 256 MOD 4 ) ;
 0160   ENDIF 
 0170 ENDPROC
 0180 TAB = 9
 0190 DIM IO$ ( 24 )
 0200 LET IO$ = "NIODIADOADIBDOBDICDOCSKP"
 0210 DIM T$ ( 8 ) , F$ ( 4 )
 0220 LET T$ = "BNBZDNDZ" ; F$ = " SCP"
 0230 DIM SK$ ( 32 )
 0240 DIM PZL$ ( 300 , 5 )
 0250 DIM S$ ( 4 ) , C$ ( 4 )
 0260 LET S$ = " LRS" ; C$ = " ZOC" ; SK$ = "    ,SKP,SZC,SNC,SZR,SNR,SEZ,SBN"
 0270 DIM ARI$ ( 24 )
 0280 LET ARI$ = "COMNEGMOVINCADCSUBADDAND"
 0290 DIM PFC$ ( 12 )
 0300 LET PFC$ = "JMPJSRISZDSZ"
 0310 DIM R$ ( 1 )
 0320 DIM A$ ( 100 )
 0330 DIM RELOC$ ( 8 )
 0340 LET RELOC$ = "0 '<34>456*"
 0350 DIM RELOC ( 3 )
 0360 DIM PZ$ ( 300 , 5 )
 0370 READ A , A$
 0380 REPEAT 
 0390   LET PZ$ ( A - 3071 ) = A$
 0400   READ A , A$
 0410 UNTIL A = - 1
 0420 READ A , A$
 0430 REPEAT 
 0440   LET PZL$ ( A + 1 ) = A$
 0450   READ A , A$
 0460 UNTIL A = - 1
 0470 CLOSE
 0480 INPUT "FIL:" , A$
 0490 OPEN FILE ( 1 , 1 ) A$
 0500 LET B = 1 ; ENDE = 0
 0510 RESET ERR
 0520 PRINT "<12>"
 0530 PRINT "ANALYSE AF FIL:" ; A$
 0540 PRINT
 0550 REPEAT 
 0560   EXEC READFI
 0570   LET BLK = A
 0580   EXEC READFI
 0590   LET LENG = A
 0600   IF BLK <> 2 AND BLK <> 6 THEN
 0610     IF BLK = 0 THEN
 0620       LET ENDE = 1
 0630     ELSE 
 0640       FOR E = LENG TO 65539
 0650         EXEC READFI
 0660       NEXT 
 0670     ENDIF 
 0680   ELSE 
 0690     FOR E = 1 TO 3
 0700       EXEC READFI
 0710       LET RELOC ( E ) = A
 0720     NEXT 
 0730     EXEC READFI
 0740     EXEC READFI
 0750     LET ADR = A
 0760     LET A$ = RELOC$ ( 1 + RELOC ( 1 ) DIV 8192 )
 0770     IF BLK = 6 THEN PRINT "ENTRYPOINT:#####" , ADR ; A$ ;
 0780     FOR E = LENG TO 65534
 0790       EXEC READFI
 0800       IF A$ = " " THEN IF PZ$ ( ADR + 1 ) <> "" THEN
 0810         PRINT PZ$ ( ADR + 1 ) ; "  " ;
 0820       ELSE 
 0830         PRINT "#####" , ADR ;
 0840         PRINT A$ ; " " ;
 0850       ENDIF 
 0860       LET ADR = ADR + 1
 0870       PRINT " #####" , A ;
 0880       LET F = E - LENG + 1
 0890       LET R$ = RELOC$ ( RELOC ( F DIV 5 + 1 ) / 2 DIV 8 ^ ( 4 - F MOD 5 ) MOD 8 + 1 )
 0900       PRINT R$ ;
 0910       IF R$ = " " THEN
 0920         LET F = A DIV 256
 0930         IF F > 32 AND F < 127 THEN
 0940           PRINT " " ; CHR ( F ) ;
 0950         ELSE 
 0960           PRINT "  " ;
 0970         ENDIF 
 0980         LET F = A MOD 256
 0990         IF F > 32 AND F < 127 THEN
 1000           PRINT CHR ( F ) ; " " ;
 1010         ELSE 
 1020           PRINT "  " ;
 1030         ENDIF 
 1040         PRINT " " ;
 1050         IF A DIV 256 = 12 THEN IF PZ$ ( A MOD 256 + 1 ) <> "" THEN
 1060           PRINT PZ$ ( A MOD 256 + 1 ) ; " " ;
 1070         ELSE 
 1080           IF A < 8192 THEN
 1090             PRINT PFC$ ( ( A DIV 2048 ) * 3 + 1 , ( A DIV 2048 ) * 3 + 3 ) ; "   " ;
 1100             PRINT CHR ( 32 + 32 * ( A DIV 1024 MOD 2 ) ) ; " " ;
 1110             EXEC ADRUD
 1120           ELSE 
 1130             IF A < 24576 THEN
 1140               IF A DIV 8192 = 1 THEN
 1150                 PRINT "LDA   " ;
 1160               ELSE 
 1170                 PRINT "STA   " ;
 1180               ENDIF 
 1190               PRINT CHR ( 32 + 32 * ( A DIV 1024 MOD 2 ) ) ; " " ; CHR ( 48 + A DIV 2048 MOD 4 ) ; "," ;
 1200               IF A DIV 8192 = 1 AND A DIV 256 MOD 8 = 0 THEN IF PZL$ ( A MOD 256 + 1 ) <> "" THEN
 1210                 PRINT PZL$ ( A MOD 256 + 1 ) ;
 1220               ELSE 
 1230                 EXEC ADRUD
 1240               ENDIF 
 1250             ELSE 
 1260               IF A > 32767 THEN
 1270                 PRINT ARI$ ( ( A DIV 256 MOD 8 ) * 3 + 1 , ( A DIV 256 MOD 8 ) * 3 + 3 ) ; C$ ( 1 + A DIV 16 MOD 4 ) ; S$ ( 1 + A DIV 64 MOD 4 ) ; " " ;
 1280                 PRINT CHR ( 32 + 3 * ( A DIV 8 MOD 2 ) ) ; " " ; CHR ( 48 + A DIV 8192 MOD 4 ) ; "," ; CHR ( 48 + A DIV 2048 MOD 4 ) ;
 1290                 IF A MOD 8 THEN PRINT SK$ ( 4 * ( A MOD 8 ) + 1 , 4 * ( A MOD 8 ) + 4 ) ;
 1300               ELSE 
 1310                 PRINT IO$ ( 3 * ( A DIV 256 MOD 8 ) + 1 , 3 * ( A DIV 256 MOD 8 ) + 3 ) ;
 1320                 IF A DIV 256 MOD 8 = 7 THEN
 1330                   PRINT T$ ( 2 * ( A DIV 64 MOD 4 ) + 1 , 2 * ( A DIV 64 MOD 4 ) + 2 ) ; "   " ;
 1340                 ELSE 
 1350                   PRINT F$ ( A DIV 64 MOD 4 + 1 ) ; "    " ;
 1360                 ENDIF 
 1370                 PRINT CHR ( 48 + A DIV 2048 MOD 4 ) ; "," ;
 1380                 PRINT "##" , A MOD 64 ;
 1390               ENDIF 
 1400             ENDIF 
 1410           ENDIF 
 1420         ENDIF 
 1430       ENDIF 
 1440       PRINT
 1450     NEXT 
 1460   ENDIF 
 1470 UNTIL ENDE
 1480 DATA 3074 "WAIT "
 1490 DATA 3075 "WAITI"
 1500 DATA 3076 "SENDM"
 1510 DATA 3077 "WAITA"
 1520 DATA 3078 "WAITE"
 1530 DATA 3079 "SENDA"
 1540 DATA 3080 "SEARC"
 1550 DATA 3081 "CLEAN"
 1560 DATA 3082 "BREAK"
 1570 DATA 3083 "STOPP"
 1580 DATA 3084 "START"
 1590 DATA 3085 "RECHA"
 1600 DATA 3188 "NEXTO"
 1610 DATA 3191 "WAITO"
 1620 DATA 3189 "RETUR"
 1630 DATA 3192 "SETIN"
 1640 DATA 3193 "SETRE"
 1650 DATA 3194 "SETCO"
 1660 DATA 3195 "CONBY"
 1670 DATA 3196 "GETBY"
 1680 DATA 3197 "PUTBY"
 1690 DATA 3198 "MULTI"
 1700 DATA 3199 "DIVID"
 1710 DATA 3226 "BINDE"
 1720 DATA 3227 "DECBI"
 1730 DATA 3200 "GETRE"
 1740 DATA 3201 "PUTRE"
 1750 DATA 3202 "WAITT"
 1760 DATA 3204 "TRANS"
 1770 DATA 3205 "INBLO"
 1780 DATA 3206 "OUTBL"
 1790 DATA 3207 "INCHA"
 1800 DATA 3208 "FREES"
 1810 DATA 3209 "OUTSP"
 1820 DATA 3210 "OUTCH"
 1830 DATA 3211 "OUTNL"
 1840 DATA 3212 "OUTEN"
 1850 DATA 3213 "OUTTE"
 1860 DATA 3214 "OUTOC"
 1870 DATA 3215 "SETPO"
 1880 DATA 3216 "CLOSE"
 1890 DATA 3217 "OPEN "
 1900 DATA 3218 "WAITZ"
 1910 DATA 3219 "INNAM"
 1920 DATA 3220 "MOVE "
 1930 DATA 3221 "INTPR"
 1940 DATA 3290 "NEWCA"
 1950 DATA 3291 "FREEC"
 1960 DATA 3292 "CDELA"
 1970 DATA 3293 "WAITS"
 1980 DATA 3294 "WAITC"
 1990 DATA 3295 "CWANS"
 2000 DATA 3296 "CTEST"
 2010 DATA 3297 "CPRIN"
 2020 DATA 3298 "CTOUT"
 2030 DATA 3299 "SIGNA"
 2040 DATA 3300 "SIGCH"
 2050 DATA 3301 "CPASS"
 2060 DATA 3302 "CREAT"
 2070 DATA 3303 "LOOKU"
 2080 DATA 3304 "CHANG"
 2090 DATA 3305 "REMOV"
 2100 DATA 3306 "INITC"
 2110 DATA 3307 "SETEN"
 2120 DATA 3308 "COMON"
 2130 DATA 3309 "CALL "
 2140 DATA 3310 "GOTO "
 2150 DATA 3311 "GETAD"
 2160 DATA 3312 "GETPO"
 2170 DATA 3316 "CSEND"
 2180 DATA 3317 "SIGGE"
 2190 DATA 3318 "WAITG"
 2200 DATA 3319 "CTOP "
 2210 DATA - 1 ""
 2220 DATA 32 "CUR"
 2230 DATA 45 ".0"
 2240 DATA 80 ".1"
 2250 DATA 86 ".10"
 2260 DATA 70 ".1024"
 2270 DATA 87 ".12"
 2280 DATA 97 ".120"
 2290 DATA 98 ".127"
 2300 DATA 73 ".128"
 2310 DATA 88 ".13"
 2320 DATA 89 ".15"
 2330 DATA 76 ".16"
 2340 DATA 66 ".1638"
 2350 DATA 79 ".2"
 2360 DATA 69 ".2048"
 2370 DATA 90 ".24"
 2380 DATA 91 ".25"
 2390 DATA 99 ".255"
 2400 DATA 72 ".256"
 2410 DATA 81 ".3"
 2420 DATA 75 ".32"
 2430 DATA 65 ".3276"
 2440 DATA 78 ".4"
 2450 DATA 92 ".40"
 2460 DATA 68 ".4096"
 2470 DATA 93 ".48"
 2480 DATA 82 ".5"
 2490 DATA 71 ".512"
 2500 DATA 94 ".56"
 2510 DATA 83 ".6"
 2520 DATA 95 ".60"
 2530 DATA 96 ".63"
 2540 DATA 74 ".64"
 2550 DATA 84 ".7"
 2560 DATA 77 ".8"
 2570 DATA 67 ".8192"
 2580 DATA 85 ".9"
 2590 DATA - 1 ""

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 = 0x0000
      stack[0] = 0x024f
      stack[1] = 0x0000
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x0242
      Loop Top = 0x0122
      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# = 0x0001
      Loop Top = 0x0000
      To Val = 3.3735e-80   (0x00010000)
      Step Val = 3.3735e-80   (0x00010000)
      Var# = 0x0087
      Loop Top = 0x0288
      To Val = 65534   (0x44fffe00)
      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 0x02 A$
    0x82 0xffff 0x00 READFI
    0x83 0xffff 0x00 A
    0x84 0xffff 0x00 B
    0x85 0xffff 0x00 C
    0x86 0xffff 0x00 D
    0x87 0xffff 0x00 E
    0x88 0xffff 0x00 ENDE
    0x89 0xffff 0x00 RELOC
    0x8a 0xffff 0x00 F
    0x8b 0xffff 0x00 BLK
    0x8c 0xffff 0x00 L
    0x8d 0xffff 0x00 LENG
    0x8e 0xffff 0x02 RELOC$
    0x8f 0xffff 0x00 MUB
    0x90 0xffff 0x00 G
    0x91 0xffff 0x00 LLIST
    0x92 0xffff 0x00 ADR
    0x93 0xffff 0x00 ANS
    0x94 0xffff 0x00 LI
    0x95 0xffff 0x00 PZ
    0x96 0xffff 0x02 PZ$
    0x97 0xffff 0x02 PFC$
    0x98 0xffff 0x02 R$
    0x99 0xffff 0x00 ADRUD
    0x9a 0xffff 0x02 ARI$
    0x9b 0xffff 0x02 C$
    0x9c 0xffff 0x02 S$
    0x9d 0xffff 0x02 SK$
    0x9e 0xffff 0x00 LIAT
    0x9f 0xffff 0x02 IO$
    0xa0 0xffff 0x02 T$
    0xa1 0xffff 0x02 F$
    0xa2 0xffff 0x02 PZL$
    0xa3 0xffff 0x00 LOST
    0xa4 0xffff 0x00 STO]

Wrapper

.magic = 0x4e32
.u_pas = 0x09e2  // 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 = 0x0048  // Page størrelse
.u_tts = 0x0009  // 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)