|
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 - download
Length: 2560 (0xa00) Types: COMAL_SAVE Names: »REP50«
└─⟦466f46364⟧ Bits:30001785 SG0005 Floppy └─⟦this⟧
SAVE filename: "REP50" 0010 REM 830201PHK RE BINARY FILE DISASSSEMBLER«nul» 0020 LET WORDA = 1 0030 PROC WORD 0040 IF WORDA THEN 0050 READ FILE ( 1 ) WORDB 0060 CALL "FIX" , WORDB , WORDC , WORDD 0070 LET A = WORDC DIV 256 + 256 * ( WORDC MOD 256 ) WORDA = 0 0080 ELSE 0090 LET A = WORDD DIV 256 + 256 * ( WORDD MOD 256 ) WORDA = 1 0100 ENDIF 0110 ENDPROC 0120 DIM HEX4$ ( 16 ) 0130 LET HEX4$ = "0123456789ABCDEF" 0140 PROC HEX4 0150 PRINT HEX4$ ( A DIV 4096 + 1 ) ; HEX4$ ( A DIV 256 MOD 16 + 1 ) ; HEX4$ ( A DIV 16 MOD 16 + 1 ) ; HEX4$ ( A MOD 16 + 1 ) ; 0160 ENDPROC 0170 PROC HEX2 0180 PRINT HEX4$ ( A DIV 16 MOD 16 + 1 ) ; HEX4$ ( A MOD 16 + 1 ) ; 0190 ENDPROC 0200 DIM FIL$ ( 5 ) 0210 DIM RELOC ( 3 ) 0220 DIM RELOC$ ( 8 ) 0230 LET RELOC$ = " '<34>-=$*~" 0240 DIM ADR$ ( 1 ) 0250 DIM DAT$ ( 1 ) 0260 LET A = 0 0270 READ B , FIL$ 0280 IF B = - 1 THEN GOTO 0310 0290 LET A = A + 1 0300 GOTO 0270 0310 LET SYMMAX = A 0320 DIM SYMB ( SYMMAX ) , SYMB$ ( SYMMAX , 5 ) 0330 RESTORE 0000 0340 FOR A = 1 TO SYMMAX 0350 READ SYMB ( A ) , SYMB$ ( A ) 0360 NEXT 0370 INPUT "<12><6>`<10>INPUT FILENAME OF COPS TO DISASSEMBLE:" , FIL$ 0380 CLOSE 0390 OPEN FILE ( 1 , 1 ) FIL$ 0400 LET ENDF = 0 0410 REPEAT 0420 EXEC WORD 0430 LET BLKTP = A 0440 EXEC WORD 0450 LET LENGTH = A 0460 CASE BLKTP OF 0470 PRINT "UNPROCESSED BLOCK. TYPE:" ; 0480 LET A = BLKTP 0490 EXEC HEX4 0500 PRINT 0510 FOR B = LENGTH TO 65539 0520 EXEC WORD 0530 NEXT 0540 WHEN 0 0550 LET ENDF = 1 0560 WHEN 2 0570 FOR B = 1 TO 3 0580 EXEC WORD 0590 LET RELOC ( B ) = A 0600 NEXT 0610 EXEC WORD 0620 EXEC WORD 0630 LET ADR = A 0640 LET ADR$ = RELOC$ ( RELOC ( 1 ) DIV 8192 ) 0650 FOR B = LENGTH TO 65534 0660 LET A = ADR C = B - LENGTH + 1 0670 EXEC HEX4 0680 PRINT ADR$ ; " " ; 0690 EXEC WORD 0700 EXEC HEX4 0710 LET DAT$ = RELOC$ ( RELOC ( C DIV 5 + 1 ) / 2 DIV 8 ^ ( 4 - C MOD 5 ) MOD 8 ) 0720 PRINT DAT$ ; " " ; 0730 CASE DAT$ OF 0740 REM «nul» 0750 WHEN " " 0760 LET C = A DIV 256 C = 32 + ( ( C - 32 ) * ( C > 32 AND C < 127 ) ) D = A MOD 256 D = 32 + ( D - 32 ) * ( D > 32 AND D < 127 ) 0770 PRINT CHR ( C ) ; CHR ( D ) ; " " ; 0780 FOR C = 1 TO SYMMAX 0790 IF A = SYMB ( C ) THEN 0800 PRINT SYMB$ ( C ) ; 0810 LET C = SYMMAX D = 0 0820 ENDIF 0830 NEXT 0840 IF NOT D THEN GOTO 0960 0850 PRINT "INSTR" ; 0860 WHEN "'" 0870 PRINT " " ; 0880 EXEC HEX4 0890 PRINT "'" ; 0900 WHEN "<34>" 0910 PRINT " " ; 0920 LET A = A / 2 0930 EXEC HEX4 0940 PRINT "'*2" ; 0950 ENDCASE «nul» 0960 LET ADR = ADR + 1 0970 PRINT 0980 NEXT 0990 WHEN 6 1000 FOR B = 1 TO 5 1010 EXEC WORD 1020 NEXT 1030 PRINT "ENTRYPOINT:" ; 1040 EXEC HEX4 1050 PRINT 1060 ENDCASE «nul» 1070 UNTIL ENDF 1080 DATA 0 "0" 1090 DATA 3232 "EXECU" 1100 DATA - 1 " "
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 = 0x0001 stack[0] = 0x0244 stack[1] = 0x0000 stack[2] = 0x0000 stack[3] = 0x0000 stack[4] = 0x0000 stack[5] = 0x0000 stack[6] = 0x0000 FOR-NEXT stack pointer = 0x0001 Var# = 0x01a7 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 = 3.08853e-84 (0x00000006) Var# = 0x0082 Loop Top = 0x0222 To Val = 65534 (0x44fffe00) Step Val = 1 (0x41100000) Var# = 0x0084 Loop Top = 0x02b2 To Val = 2 (0x41200000) Step Val = 1 (0x41100000) 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 0x00 WORD 0x82 0x0030 0x00 B 0x83 0x002e 0x00 A 0x84 0x005a 0x00 C 0x85 0x005c 0x00 D 0x86 0x0000 0x00 WORDA 0x87 0x004e 0x00 WORDB 0x88 0x0050 0x00 WORDC 0x89 0x0052 0x00 WORDD 0x8a 0xffff 0x00 HEX4 0x8b 0x0002 0x02 HEX4$ 0x8c 0xffff 0x00 HEX2 0x8d 0x000d 0x02 FIL$ 0x8e 0x004c 0x00 ENDF 0x8f 0x0054 0x00 BLKTP 0x90 0x0056 0x00 LENGTH 0x91 0x0013 0x01 RELOC 0x92 0x001f 0x02 RELOC$ 0x93 0x0026 0x02 ADR$ 0x94 0x0058 0x00 ADR 0x95 0x002a 0x02 DAT$ 0x96 0x0032 0x00 SYMMAX 0x97 0x0034 0x01 SYMB 0x98 0x003d 0x03 SYMB$
.magic = 0x4e32 .u_pas = 0x0364 // Length of UPAS in words .u_das = 0x0143 // Length of UDAS in words .u_dvs = 0x00e5 // Start på savede variabel indhold (word adr) .u_nds = 0x00eb // Address på næste prog.sætning (word adr) .u_cps = 0x00be // Address på curr prog.sætning (word adr) .u_tll = 0x0000 // 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 = 0x035b // ON ESE (word adr) .u_era = 0x06b4 // ON ERR (word adr) .u_cas = 0xffff // CASE dybde .u_las = 0xffff // last (-1)