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

⟦02fa180a6⟧ COMAL_SAVE

    Length: 2264 (0x8d8)
    Types: COMAL_SAVE
    Notes: LOOKUPMT
    Names: »LOOKUPMT«

Derivation

└─⟦714f3848e⟧ Bits:30006597 ALM Copy 24.9.79
    └─ ⟦this⟧ »ASS2::LOOKUPMT« 

UPAS Segment

SAVE filename: "LOOKUPMT"

 0010 REM  AUTOLOOKUP PÅ LD   FØRSTE REM-TEXT KOMMER MED  UD    «so»«so»   V.  JM«nul»
 0020 CLOSE
 0030 PAGE = 0
 0040 DEF FNB ( VAR82 ) = I$ ( [LVAR]  ) = " "
 0050 DIM A$ ( 500 ) , I$ ( 32 ) , RAN ( 32 ) , UD ( 4 )
 0060 INPUT "LD  " , A$ , "<27><12>" , I$
 0070 CONNECT A$
 0080 PRINT "<14> DETTE ER EN LOOKUP PÅ " ; A$ ; "<10><10>"
 0090 OPEN FILE ( 7 , 9 ) "LPT"
 0100 INPUT FILE ( 7 ) I$ , I$ , I$ , I$ , I$
 0110 WHILE I$ ( 1 , 8 ) <> "$FREE   " DO
 0120   EXEC UD
 0130   INPUT FILE ( 7 ) I$
 0140 ENDWHILE
 0150 PRINT "<10><13>" ; I$
 0160 CLOSE
 0170 STOP «nul» 
 0180 PROC UD
 0190   PRINT "<10><13>" ; I$ ; "   " ;
 0200   IF I$ ( 1 , 8 ) = "LPT     " THEN RETURN «nul»
 0210   LET A$ = I$ ( 1 , 8 - FNB ( 8 ) - FNB ( 7 ) - FNB ( 6 ) - FNB ( 5 ) - FNB ( 4 ) - FNB ( 3 ) - FNB ( 2 ) - FNB ( 1 ) )
 0220   OPEN FILE ( 1 , 1 + 3 * ( I$ ( 10 ) = "R" ) ) A$
 0230   MAT RAN = ZER
 0240   IF I$ ( 10 ) = "R" THEN
 0250     PRINT " R " ;
 0260     ON ERR THEN GOTO 0280
 0270     MAT READ FILE ( 1 , 1 ) RAN
 0280     RESET ERR
 0290     LET PT[[ = 0
 0300     FOR X = 1 TO 32
 0310       LET A = RAN ( X )
 0320       EXEC UDSK
 0330       IF PT[[ > 90 THEN LET X = 32
 0340     NEXT 
 0350   ELSE 
 0360     READ FILE ( 1 ) A
 0370     CALL "FIX" , A , A1 , A2
 0380     IF A1 = 21334 THEN
 0390       PRINT " S " ;
 0400       MAT READ FILE ( 1 ) RAN
 0410       LET FU = 1
 0420       REPEAT 
 0430         READ FILE ( 1 ) A
 0440         CALL "FIX" , A , A1 , A2
 0450       UNTIL A1 MOD 256 = 86 OR A2 MOD 256 = 86 OR EOF ( 1 )
 0460       IF A1 MOD 256 = 86 OR A2 MOD 256 = 86 THEN
 0470         CALL "FIX" , A , A1 , A2
 0480         IF A1 DIV 256 <> 0 AND A1 MOD 256 <> 0 THEN EXEC UDSK
 0490         READ FILE ( 1 ) A
 0500         IF A1 DIV 256 <> 0 AND A1 MOD 256 <> 0 AND A2 DIV 256 <> 0 AND A2 MOD 256 <> 0 THEN GOTO 0470
 0510       ENDIF 
 0520     ELSE  HVIS IKKE SAVEFIL«nul»@ 
 0530       IF EOF ( 1 ) THEN PRINT "  TOM FIL        " ;
 0540       IF EOF ( 1 ) THEN GOTO 0710
 0550       READ FILE ( 1 ) A$
 0560       IF LEN ( A$ ) > 90 THEN
 0570         PRINT " L " ;
 0580         LET FU = 1 ; BL = 0
 0590         FOR L = 1 TO LEN ( A$ ) - 3
 0600           IF A$ ( L , L + 2 ) = "REM" THEN LET FU = 0 ; FL = L ; L = L + 3
 0610           IF FU = 0 AND ORD ( A$ ( L ) ) MOD 128 > 31 THEN PRINT A$ ( L ) ;
 0620           IF FU = 0 THEN IF A$ ( L ) = "<13>" OR L - FL + BL > 91 THEN LET FU = 1 ; BL = BL + ( L - FL )
 0630         NEXT 
 0640       ELSE 
 0650         PRINT " D " ;
 0660         EXEC UDSK
 0670         FOR L = 1 TO LEN ( A$ )
 0680           IF A$ ( L ) > "<31>" AND A$ ( L ) < "<127>" THEN PRINT A$ ( L ) ;
 0690         NEXT 
 0700       ENDIF    LIST /DATAFILVALG«nul» 
 0710     ENDIF  SAVE/LISTFIL«nul» 
 0720   ENDIF IKKE RANDOMFIL«nul»L 
 0730   ON ERR THEN GOTO 0750
 0740   CLOSE FILE ( 1 )
 0750   RESET ERR
 0760 ENDPROC
 0770 PROC UDSK
 0780   CALL "FIX" , A , A1 , A2
 0790   LET UD ( 1 ) = A1 DIV 256 ; UD ( 2 ) = A1 MOD 256 ; UD ( 3 ) = A2 DIV 256 ; UD ( 4 ) = A2 MOD 256
 0800   FOR U = 1 TO 4
 0810     IF UD ( U ) MOD 128 > 31 THEN PRINT CHR ( UD ( U ) ) ;
 0820     IF UD ( U ) MOD 128 > 31 THEN LET PT[[ = PT[[ + 1
 0830   NEXT 
 0840 ENDPROC

UDAS Segment

    FNA definition = 0xffff
    FNB definition = 0x006c
    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] = 0x00d6
      stack[1] = 0x0193
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x008d
      Loop Top = 0x029f
      To Val = 497   (0x431f1000)
      Step Val = 1   (0x41100000)
      Var# = 0x008f
      Loop Top = 0x037e
      To Val = 4   (0x41400000)
      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)
      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] = 0x01d4
      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] = 0x00c3
      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] = 0x0001
      stack[1] = 0x0001
      stack[2] = 0x0000
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
Variables:
    0x80 0xffff 0x00 
    0x81 0xffff 0x02 I$
    0x82 0xffff 0x02 A$
    0x83 0xffff 0x00 RAN
    0x84 0xffff 0x00 UD
    0x85 0xffff 0x00 PT[[
    0x86 0xffff 0x00 X
    0x87 0xffff 0x00 A
    0x88 0xffff 0x00 UDSK
    0x89 0xffff 0x00 A1
    0x8a 0xffff 0x00 A2
    0x8b 0xffff 0x00 FU
    0x8c 0xffff 0x00 BL
    0x8d 0xffff 0x00 L
    0x8e 0xffff 0x00 FL
    0x8f 0xffff 0x00 U

Wrapper

.magic = 0x5356
.u_pas = 0x03a5  // Length of UPAS in words
.u_das = 0x00b8  // Length of UDAS in words
.u_dvs = 0x00b8  // 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 = 0x0000  // 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)