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

⟦8e1e86ca0⟧ COMAL_SAVE

    Length: 4656 (0x1230)
    Types: COMAL_SAVE

Derivation

└─⟦3d9d2c4f1⟧ Bits:30001780 SG0000 Floppy
    └─ ⟦21d8bd34b⟧ »/CLPRG « 
        └─⟦this⟧ 

UPAS Segment

SAVE filename: "CLPRG"

 0010 REM  22.12.81 273 SM  Morten Marquard 2vmf  ** BASIC ** CLPRG ** se iøvrigt andre prg **  «so»  CLPRG«nul»«nul»
 0020 REM  CB 12.11 - 15.11.79 «so»LAGERANALYSE M. PS  ... "CLPRG"«nul»
 0030 REM   SPECIALVERSION MED EN SPALTE TIL BRUG VED MANUEL ANALYSE CB.11.12.79«nul» 
 0040 PAGE = 82
 0050 CONNECT "ASS" , 9
 0060 PROC RADIX
 0070   FOR II = 4 + ( RA = 10 ) TO 1 STEP - 1
 0080     LET RAD$ ( II ) = CHR ( RA0 MOD RA + ( RA0 MOD RA > 9 ) * 7 + 48 - 16 * ( SP = 1 ) * ( RA0 = 0 ) ) ; RA0 = RA0 DIV RA
 0090   NEXT 
 0100 ENDPROC
 0110 PROC FIND
 0120   LET MIN = 1 ; MAX = EA * ( \ = 1 ) + PA * ( \ = 2 ) + AD * ( \ = 3 ) ; MIDT = MAX * ( ] > ADR ( \ , 1 ) ) DIV ( 2 - ( ] >= ADR ( \ , MAX ) ) ) ; JUMP = 0
 0130   IF ] <= ADR ( \ , 1 ) OR ] >= ADR ( \ , MAX ) THEN GOTO 0170
 0140   WHILE ADR ( \ , MIDT ) >= ] OR ADR ( \ , MIDT + 1 ) < ] DO
 0150     LET W = ( ] > ADR ( \ , MIDT ) ) ; S = NOT W ; MIN = MIN * S + MIDT * W ; MAX = MAX * W + MIDT * S ; MIDT = ( MIN + MAX ) DIV 2
 0160   ENDWHILE
 0170   IF ADR ( \ , MIDT + 1 ) <> ] THEN GOTO 0200
 0180   READ FILE ( [FAIL RENDER FUNC READ 8bf87ff941100000f18ef97f41100000f793f194e2f9][8bf87ff941100000f18ef97f41100000f793f194e2f9]
 0190   LET JUMP = 1 ; UD$ = UD$ ( 1 , 5 + ( ( \ = 2 ) + ( \ = 3 ) ) * ( LEN ( UD$ ) - 5 ) )
 0200 ENDPROC
 0210 CLOSE
 0220 PAGE = 0
 0230 DIM DAT$ ( 8 ) , UDD$ ( 50 ) , UD$ ( 17 ) , UDSKRIFT$ ( 81 ) , UDSK$ ( 13 ) , T$ ( 12 , 8 ) , HJ[LP$ ( 10 ) , RAD$ ( 5 ) , ADR ( 3 , 200 ) , CA ( 2 ) , B$ ( 20 )
 0240 DEF FNB ( VAR98 ) = ABS ( S ) MOD 10 ^ [LVAR]  DIV 10 ^ ( [LVAR]  - 1 ) + 48 - 16 * ( ABS ( S ) DIV 10 ^ ( [LVAR]  - 1 ) = 0 ) * ( [LVAR]  <> 1 )
 0250 LET EA = 20 ; PA = 140 ; AD = 195 ; RAD$ = "     " ; UDSK$ = "                                 "
 0260 OPEN FILE ( 0 , 4 ) "R.ENT"
 0270 OPEN FILE ( 1 , 4 ) "R.PSE"
 0280 OPEN FILE ( 2 , 4 ) "R.ADR"
 0290 OPEN FILE ( 3 , 4 ) "R.STA"
 0300 OPEN FILE ( 4 , 4 ) "R.DSE"
 0310 OPEN FILE ( 7 , 4 ) "CAL25"
 0320 READ FILE ( 7 , 32 ) CUR
 0330 READ FILE ( 7 , CUR + 50 ) CTOP
 0340 READ FILE ( 7 , CUR + 55 ) FCTOP
 0350 FOR S = 1 TO AD + 1
 0360   IF S <= EA THEN READ FILE ( 0 , S ) ADR ( 1 , S )
 0370   IF S <= PA THEN READ FILE ( 1 , S ) ADR ( 2 , S )
 0380   IF S <= 12 THEN READ T$ ( S )
 0390 NEXT 
 0400 DATA " ZOC" , " LRS" , " SCP" , "BNBZDNDZ" , "    " , ",SKP" , ",SZC" , ",SNC" , ",SZR" , ",SNR" , ",SEZ" , ",SBN"
 0410 INPUT "START SIDE " , STS , "<13><10>SLUT SIDE " , SLS
 0420 FOR III = STS TO SLS
 0430   PRINT "<12>"
 0440   PRINT TAB ( 38 ) ; "_____________________      _________________"
 0450   PRINT "   ADR INDHOLD      INSTRUKTION      !AC0 !AC1 !AC2 !AC3 !      ! ADR ! INDHOLD"
 0460   PRINT "  -----------------------------------!----!----!----!----!------!----------------"
 0470   READ FILE ( 7 , III * 60 ) B
 0480   LET CA ( 1 ) = ( B = 3232 ) ; CA ( 2 ) = ( B = 3236 )
 0490   FOR ADRR = III * 64 TO III * 64 + 63
 0500     LET JUMP = 0 ; UDSK$ = "               "
 0510     READ FILE ( 7 , ADRR ) B
 0520     LET UDD$ = " !____!____!____!____!      !_____!______________"
 0530     LET B1 = B DIV 256 ; B2 = B MOD 256 ; SP = 1 ; RA = 10 ; RA0 = B
 0540     EXEC RADIX
 0550     LET UDSK$ ( 9 , 13 ) = RAD$
 0560     LET SP = 0 ; RA0 = ADRR
 0570     LET \ = 3 ; ] = ADRR
 0580     EXEC FIND
 0590     IF JUMP THEN LET RAD$ = UD$
 0600     IF NOT JUMP THEN EXEC RADIX
 0610     LET UDSK$ ( 3 , 7 ) = RAD$
 0620     IF ADRR < CUR THEN GOTO 0680
 0630     LET UD$ = "               "
 0640     IF ADRR > CTOP AND ADRR < FCTOP THEN GOTO 0680
 0650     IF ADRR > CUR AND ADRR < CTOP THEN GOTO 1070
 0660     LET S = B1 ; UD$ = "." , CHR ( FNB ( 3 ) ) , CHR ( FNB ( 2 ) ) , CHR ( FNB ( 1 ) ) , "." ; S = B2 ; UD$ = UD$ , CHR ( FNB ( 3 ) ) , CHR ( FNB ( 2 ) ) , CHR ( FNB ( 1 ) ) , "."
 0670     GOTO 1070
 0680     IF CA ( 1 ) THEN
 0690       LET \ = 1 ; ] = B
 0700       EXEC FIND
 0701       IF JUMP = 0 THEN LET UD$ = RAD$ , "                            " ; JUMP = 1
 0710     ENDIF 
 0720     IF CA ( 2 ) THEN
 0730       READ FILE ( 1 , B + 142 ) UD$
 0731       LET JUMP = 1
 0740     ENDIF 
 0750     IF NOT ( JUMP = 0 AND CA ( 1 ) AND CA ( 2 ) OR B < 256 OR ADRR < 311 ) THEN GOTO 0790
 0760     LET JUMP = 1 ; SP = ( B < 256 OR ADRR < 311 ) ; RA = 10 ; RA0 = B
 0770     EXEC RADIX
 0780     LET UD$ = RAD$
 0790     LET CA ( 1 ) = ( B = 3232 ) ; CA ( 2 ) = ( B = 3236 ) ; \ = 2 ; ] = B
 0800     IF JUMP THEN GOTO 1070
 0810     EXEC FIND
 0820     IF JUMP THEN GOTO 1070
 0830     READ FILE ( 3 , B1 + 1 ) UD$
 0840     LET UD$ = UD$ , "               "
 0850     IF UD$ ( 1 , 4 ) = "FEJL" THEN GOTO 0760
 0860     IF B1 > 127 THEN
 0870       LET UD$ ( 4 ) = T$ ( 1 , B MOD 64 DIV 16 + 1 ) ; UD$ ( 4 + ( UD$ ( 4 ) <> " " ) ) = T$ ( 2 , B2 DIV 64 + 1 )
 0880       LET UD$ ( 11 , 14 ) = T$ ( B MOD 8 + 5 ) ; UD$ ( 6 ) = CHR ( 32 + B MOD 16 DIV 8 * 3 )
 0890     ELSE 
 0900       IF B1 > 95 THEN
 0910         IF UD$ ( 1 ) <> "S" THEN LET S = B2 MOD 64 ; UD$ ( 4 ) = T$ ( 3 , B2 DIV 64 + 1 ) ; UD$ ( 9 , 10 ) = CHR ( FNB ( 2 ) ) , [FAIL RENDER FUNC LET f242f27f41100000f6f6e200][f242f27f41100000f6f6e200]
 0920         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 )
 0930         IF UD$ ( 1 ) = "S" OR UD$ ( 1 ) = "N" THEN LET UD$ ( 7 , 10 ) = CHR ( FNB ( 2 ) ) , [FAIL RENDER FUNC LET f242f27f41100000f6f6f1e9022020e2][f242f27f41100000f6f6f1e9022020e2]
 0940         IF S > 2 THEN IF S < 65 THEN
 0950           READ FILE ( 3 , 508 + S ) B$
 0960           LET B$ = B$ ( 1 , 5 )
 0970           LET UD$ ( 9 - 2 * ( ( B1 = 96 ) + ( B1 = 103 ) ) , 8 - 2 * ( ( B1 = 96 ) + ( B1 = 103 ) ) + LEN ( B$ ) ) = B$
 0980         ENDIF 
 0990       ELSE 
 1000         LET S = B2 - ( B MOD 1024 DIV 256 <> 0 ) * ( B2 > 127 ) * 256 ; LS = 2 * ( B1 DIV 32 <> 0 )
 1010         LET UD$ ( 6 + LS , 9 + LS ) = CHR ( 43 + 2 * ( S < 0 ) ) , [FAIL RENDER FUNC LET f242f27f41300000f6f6f16ef242f27f41200000f6f6f16ef242f27f41100000f6f6e240][f242f27f41300000f6f6f16ef242f27f41200000f6f6f16ef242f27f41100000f6f6e240]
 1020         IF B1 > 7 AND S > 10 AND S < 112 AND B1 MOD 4 = 3 THEN
 1030           READ FILE ( 4 , S ) HJ[LP$
 1040           LET UD$ ( 6 + LS , 15 ) = HJ[LP$ , ",3          "
 1045         ENDIF 
 1050       ENDIF 
 1060     ENDIF 
 1070     REM «nul»
 1080     LET UD$ = UD$ , "                 " ; UDSKRIFT$ = UDSK$ , "  "
 1081     LET UDSKRIFT$ = UDSKRIFT$ , CHR ( 32 + ( B1 - 32 ) * ( B1 > 31 AND B1 < 127 ) )
 1082     LET UDSKRIFT$ = UDSKRIFT$ , CHR ( 32 + ( B2 - 32 ) * ( B2 > 31 AND B2 < 127 ) )
 1083     LET UDSKRIFT$ = UDSKRIFT$ , "  " , UD$ , UDD$
 1090     PRINT UDSKRIFT$
 1100   NEXT 
 1110 NEXT 
 1120 CLOSE
 1130 END «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 = 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 RADIX
    0x82 0xffff 0x00 II
    0x83 0xffff 0x00 RA
    0x84 0xffff 0x02 RAD$
    0x85 0xffff 0x00 RA0
    0x86 0xffff 0x00 SP
    0x87 0xffff 0x00 FIND
    0x88 0xffff 0x00 MIN
    0x89 0xffff 0x00 MAX
    0x8a 0xffff 0x00 EA
    0x8b 0xffff 0x00 \
    0x8c 0xffff 0x00 PA
    0x8d 0xffff 0x00 AD
    0x8e 0xffff 0x00 MIDT
    0x8f 0xffff 0x00 ]
    0x90 0xffff 0x00 ADR
    0x91 0xffff 0x00 JUMP
    0x92 0xffff 0x00 W
    0x93 0xffff 0x00 S
    0x94 0xffff 0x02 UD$
    0x95 0xffff 0x02 DAT$
    0x96 0xffff 0x02 UDD$
    0x97 0xffff 0x02 UDSKRIFT$
    0x98 0xffff 0x02 UDSK$
    0x99 0xffff 0x02 T$
    0x9a 0xffff 0x02 HJ[LP$
    0x9b 0xffff 0x00 CA
    0x9c 0xffff 0x02 B$
    0x9d 0xffff 0x00 CUR
    0x9e 0xffff 0x00 CTOP
    0x9f 0xffff 0x00 FCTOP
    0xa0 0xffff 0x00 STS
    0xa1 0xffff 0x00 SLS
    0xa2 0xffff 0x00 III
    0xa3 0xffff 0x00 B
    0xa4 0xffff 0x00 ADRR
    0xa5 0xffff 0x00 B1
    0xa6 0xffff 0x00 B2
    0xa7 0xffff 0x00 LS

Wrapper

.magic = 0x4e32
.u_pas = 0x07d9  // Length of UPAS in words
.u_das = 0x0130  // Length of UDAS in words
.u_dvs = 0x0130  // 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 = 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)