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 - metrics - download

⟦7c9b24c3c⟧ COMAL_SAVE

    Length: 2504 (0x9c8)
    Types: COMAL_SAVE
    Notes: LIB::PHANTNUM, PHANTNUM
    Names: »PHANTNUM«

Derivation

└─⟦43f2224a3⟧ Bits:30007878 (Demostrations diskette af 1981 Frederikshavn Gymnasium Område : LIB Nøgle : 1)
    └─⟦this⟧ »LIB::PHANTNUM« 

UPAS Segment

SAVE filename: "PHANTNUM"

 0010 REM  PHANTNUM«nul»
 0020 DIM SVAR$ ( 10 ) , F[RDIG$ ( 10 ) , TAL ( 10 )
 0030 REPEAT 
 0040   LET F[RDIG$ = "         "
 0050   INPUT "ØNSKES INSTRUKTION?" , SVAR$
 0060   PRINT
 0070   IF SVAR$ = "JA" THEN EXEC INSTR
 0080   EXEC KODE
 0090   REPEAT 
 0100     EXEC IND
 0110   UNTIL F[RDIG$ = "1111111111"
 0120   PRINT
 0130   PRINT "GODT,DET GIK FINT !"
 0140   PRINT
 0150   INPUT "VIL DU PRØVE IGEN ?" , SVAR$
 0160 UNTIL SVAR$ <> "JA"
 0170 REM      SLUT PÆ PROGRAMMET !«nul»
 0180 PROC IND
 0190   INPUT "   " , SVAR$
 0200   PRINT
 0210   LET OK = 1
 0220   EXEC TEST
 0230   IF NOT OK THEN PRINT "FEJL I INPUT"
 0240 ENDPROC ND«nul»«ff»

 0250 PROC TEST
 0260   IF LEN ( SVAR$ ) > 2 THEN
 0270     CASE SVAR$ ( 2 ) OF
 0280       LET OK = 0
 0290     WHEN "="
 0300       IF SVAR$ ( 3 ) > "/" AND SVAR$ ( 3 ) < ":" THEN
 0310         EXEC SVARTAL
 0320       ELSE 
 0330         LET OK = 0
 0340       ENDIF 
 0350     WHEN "*" , "+" , "-"
 0360       EXEC UDREGN
 0370     ENDCASE  SVAR$«nul» 
 0380   ELSE 
 0390     LET OK = 0
 0400   ENDIF ÆNGDE>2«nul» 
 0410 ENDPROC EST«nul»
 0420 PROC SVARTAL
 0430   IF BOGSTAV$ ( ORD ( SVAR$ ( 3 ) ) - 47 ) = SVAR$ ( 1 ) THEN
 0440     PRINT "            JA " ; SVAR$
 0450     LET F[RDIG$ ( ORD ( SVAR$ ( 3 ) ) - 47 ) = "1"
 0460   ELSE 
 0470     PRINT "   NEJ " ; SVAR$
 0480   ENDIF 
 0490 ENDPROC VARTAL«nul»
 0500 PROC UDREGN
 0510   FOR X = 1 TO 3 STEP 2
 0520     LET TAL ( X ) = - 1
 0530     FOR Y = 1 TO 10
 0540       IF SVAR$ ( X ) = BOGSTAV$ ( Y ) THEN
 0550         LET TAL ( X ) = Y - 1
 0560       ENDIF 
 0570     NEXT 
 0580   NEXT 
 0590   IF TAL ( 1 ) >= 0 AND TAL ( 3 ) >= 0 THEN
 0600     CASE SVAR$ ( 2 ) OF
 0610       REM =---------------------------------------////////«nul»
 0620     WHEN "*"
 0630       LET FACIT = TAL ( 1 ) * TAL ( 3 )
 0640     WHEN "+"
 0650       LET FACIT = TAL ( 1 ) + TAL ( 3 )
 0660     WHEN "-"
 0670       LET FACIT = TAL ( 1 ) - TAL ( 3 )
 0680       IF FACIT < 0 THEN LET FACIT = FACIT + 10
 0690     ENDCASE «nul» 
 0700     LET FACIT = FACIT - 10 * INT ( FACIT / 10 )
 0710     PRINT "     " ; SVAR$ ; "=" ; BOGSTAV$ ( FACIT + 1 )
 0720   ELSE K=0«nul» 
 0730     LET OK = 0
 0740   ENDIF 
 0750 ENDPROC DREGN«nul»
 0760 PROC KODE
 0770   RANDOMIZE 
 0780   DIM BOGSTAV$ ( 10 )
 0790   LET BOGSTAV$ = "                        "
 0800   LET X = 1
 0810   REPEAT 
 0820     LET T = INT ( RND ( 0 ) * 10 + 1 )
 0830     IF BOGSTAV$ ( T ) = " " THEN
 0840       LET BOGSTAV$ ( T ) = CHR ( X + 64 ) X = X + 1
 0850     ENDIF 
 0860   UNTIL X = 11
 0870 ENDPROC ODE«nul»
 0880 PROC INSTR
 0890   PRINT "DETTE PROGRAM GIVER DIG EN OPGAVE, DER KALDES"
 0900   PRINT "PHANTNUM"
 0910   PRINT "PROGRAMMET TILDELER BOGSTAVERNE ABCDEFGHIJ VÆRDIERNE"
 0920   PRINT "FRA 0 TIL 9 PÅ HELT TILFÆLDIG VIS"
 0930   PRINT "DU SKAL DEREFTER FINDE HVERT BOGSTAVS VÆRDI VED AT STILLE"
 0940   PRINT "SPØRGSMÅL AF DENNE TYPE: A+B, A-B, A*B ELLER A=8"
 0950   PRINT "PROGRAMMETS SVAR PÅ DET SIDSTE SPØRGSMÅL VIL VÆRE JA"
 0960   PRINT "ELLER NEJ, MENS DET VED DE ANDRE TYPER VIL VÆRE DET BOGSTAV"
 0970   PRINT "DER ER SIDSTE TAL I RESULTATET. HVIS RESULTATET ER NEGATIVT"
 0980   PRINT "BLIVER DER LAGT 10 TIL RESULTATET, INDEN DET GIVES."
 0990   PRINT "NÅR DU HAR FUNDET ALLE BOGSTAVERNES VÆRDI, BLIVER DU ROST!"
 1000   PRINT
 1010   PRINT
 1020 ENDPROC NSTR«nul»U
 1030 CHAIN "LOOKUP"

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] = 0x0087
      stack[1] = 0x00dd
      stack[2] = 0x011e
      stack[3] = 0x0000
      stack[4] = 0x0000
      stack[5] = 0x0000
      stack[6] = 0x0000
    FOR-NEXT stack pointer = 0x0000
      Var# = 0x0082
      Loop Top = 0x01a4
      To Val = 3   (0x41300000)
      Step Val = 2   (0x41200000)
      Var# = 0x0083
      Loop Top = 0x01b7
      To Val = 10   (0x41a00000)
      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] = 0x005d
      stack[1] = 0x0084
      stack[2] = 0x028a
      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 0x00 I
    0x82 0xffff 0x00 X
    0x83 0xffff 0x00 Y
    0x84 0xffff 0x02 SVAR$
    0x85 0xffff 0x02 F[RDIG$
    0x86 0xffff 0x00 TAL
    0x87 0xffff 0x00 INSTR
    0x88 0xffff 0x00 KODE
    0x89 0xffff 0x00 IND
    0x8a 0xffff 0x00 OK
    0x8b 0xffff 0x00 TEST
    0x8c 0xffff 0x00 SVARTAL
    0x8d 0xffff 0x00 UDREGN
    0x8e 0xffff 0x02 BOGSTAV$
    0x8f 0xffff 0x00 FACIT
    0x90 0xffff 0x00 T
    0x91 0xffff 0x00 BOGSTAV

Wrapper

.magic = 0x5356
.u_pas = 0x0413  // Length of UPAS in words
.u_das = 0x00c2  // Length of UDAS in words
.u_dvs = 0x00c2  // Start på savede variabel indhold (word adr)
.u_nds = 0x0042  // 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)