DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 4096 (0x1000) Types: TextFile Names: »TEST_7.S«
└─⟦18a2fd90d⟧ Bits:30005144 8" CR80 Floppy CR80FD_0132 ( CR/D/2479 CRD2479: En-CPU CPU/CACHE TEST- PROGRAMMER node: master: CRP5 ) └─⟦56889de57⟧ └─ ⟦this⟧ »TEST_7.S«
PROCEDURE TEST_7 (R6); "********************************************************************* "********************************************************************* VAR SAVE: ARRAY[0..7] OF INTEGER; ADR_HEX23: INTEGER; ADR_HEX3C: INTEGER; C_RECORD_ARRAY: ARRAY[0..#10] OF INTEGER; LOG_PAGE1: INTEGER; LOCAL_COUNT: INTEGER; LABEL TIMER_REENTRY; BEGIN R7=>SAVE[7]; STC(6,ADDRESS(SAVE[7])=>R7); OUTNEWLINE(R6); OUTTEXT(ADDRESS('TEST 7 RUNNING (:0:)')=>R3,R6); OUTNEWLINE(R6); FLUSHOUT(R6); COUNT=>R0=>LOCAL_COUNT; WHILE LOCAL_COUNT=>R0 <>0 DO BEGIN "MAP IN LOG_PROG_PAGE0 AS DATAPAGE 1 #0FC0=>R1; SIO(R0,R1); "READ PHPAGE OF LOGPROGPAGE 0 #0FA0=>R1; CAD; CIO(R0,R1); "MAP IN THIS PHPAGE AS LOGDATAPAGE 20 IF DICA=>R0=0 THEN CAE; "SAVE LOGPROGLOCATIONS HEX 23 AND HEX 3C #8023=>R7; R7@INTEGER=>R0=>ADR_HEX23; #803C=>R7; R7@INTEGER=>R0=>ADR_HEX3C; #8023=>R7; #0=>R1; R1=>R7@INTEGER; #803C=>R7; LOCATION(TIMER_REENTRY)=>R0; R0=>R7@INTEGER; KONTROL=>R0 EXTRACT 1; IF R0=1 THEN CAD; "INITIALIZE DP63 #FFDD=>R7; #FF00=>R0; R0=>R7@INTEGER; #FFDE=>R7; #F000=>R0=>R7@INTEGER; #FFDF=>R7; #FF00=>R0=>R7@INTEGER; #10=>R2; 0=>R0; #FFF0=>R7; #3F3E=>R1; WHILE R0<>R2 DO BEGIN R1=>R7@INTEGER; R0+1; R7+1; END; KONTROL=>R0 EXTRACT 2; R0 SHIFTRL 1; IF R0=1 THEN CAD; #1234=>R0=>R1=>R2=>R3=>R4=>R5=>R6=>R7; 0=>R4; LDT(R4); "TIMER:=0 WHILE R4=0 DO SVT(R4); "WAIT UNTIL TIMER IS NEGATIVE SVS(R2); R2 EXTRACT #F; LDS(R2); KONTROL=>R0; R0 EXTRACT 3; R0 SHIFTRL 2; IF R0=1 THEN CAD; " RCR; IF THE CACHE WAS ENABLED, IT IS " DISABLED AT THE TIMER INTERRUPT, " AND VICE VERSA " " R0 SHIFTRL #F; " IF R0=0 THEN " BEGIN " CAE; " END " ELSE " BEGIN " CAD; " END; KONTROL=>R0 EXTRACT 4; R0 SHIFTRL 3; IF R0=1 THEN CAD; WHILE R0=R0 DO BEGIN #8000=>R0; "THIS CODE DISASSEMBLED BECOMES: " 8056 MOD8 80 " 0048 MOVC 0 ->R0 " 8056 MOD8 80 " 0049 MOVC 0 ->R1 " 018A ADD R0 R1 " D2BC SVS R2 #8000=>R1; R1+R0; SVS(R2); END; TIMER_REENTRY: NOP; NOP; NOP; NOP; NOP; NOP; KONTROL=>R0 EXTRACT 5; R0 SHIFTRL 4; IF R0=1 THEN CAD; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; "REESTABLISH LOGPROGLOCATIONS HEX 23 AND HEX 3C ADR_HEX23=>R6; #8023=>R7; R6=>R7@INTEGER; ADR_HEX3C=>R6; #803C=>R7; R6=>R7@INTEGER; "REGISTERS IN THE CONTEXT RECORD CONTAINS: "R0=OP1 AT ADD "R1=DESTINATION AT ADD (R1:=R1+R0) "R2=PSW AFTER SVS "R3=JUNK "R4=TIMER "R5=JUNK "R6=JUNK "R7=JUNK "▶1b◀ "DUMP CONTEXTRECORD, REESTABLISH CONTEXT STACK POINTER KONTROL=>R0 EXTRACT 6; R0 SHIFTRL 5; IF R0=1 THEN CAD; #FFDD=>R7; R7@INTEGER=>R6; 0=>R0; #10=>R2; WHILE R0<>R2 DO "READ CONTEXTRECORD => C_RECORD_ARRAY BEGIN R6@INTEGER=>C_RECORD_ARRAY[R0]; R6@INTEGER=>R7=>RESULTS[R0]; R0+1; R6+1; END; #FFDD=>R7; "REESTABLISH CONTEXT STACK POINTER #FF00=>R7@INTEGER; IF (OUT_ENABLE=>R0)=1 THEN BEGIN "DUMP CONTEXT RECORD OUTNEWLINE(R6); OUTTEXT(ADDRESS(' R0 R1 R2 R3 R4 R5 R6 R7 (:0:)')=>R3,R6); OUTNEWLINE(R6);