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: 6144 (0x1800) Types: TextFile Names: »TEST_8.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_8.S«
PROCEDURE TEST_8 (R6); "********************************************************************* "THE PROGRAM MOVES A BLOCK OF #10 WORDS FROM LOG-DATA-ADRESSES "#800->#810 TO #10 LOCATIONS AROUND ADRESSES #3C00->3FFF. " ---------------------- " I I " I I " I I " I I " I I " I I " I====================I #800 START OF PAGE 2 " I I " I I SOURCE-AREA " I I " I--------------------I #80F " I I " I I " I I " I I " I I " I I " I I " I I " I--------------------I----------< START OF DESTINATION AREA " I I " I I " I====================I #4000 START OF PAGE #10 " I I " I I " I--------------------I----------< END OF DESTINATION AREA " I I " I I " I I " I I "THE VARIABLE >KONTROL< DEFINES THE START OF THE DESTINATION AREA: " KONTROL DEFINES IN WHICH WRITE-OPERATION A PAGE-FAULT IS TO ARISE: " KONTROL=1 => PAGEFAULT IN THE FIRST WRITE " =2 => PAGEFAULT IN THE SECOND WRITE " ETC. " IE KONTROL=1 => FIRST DESTINATION ADR = #4000 " =2 => FIRST DESTINATION ADR = #3FFF " = " =N => FIRST DESTINATION ADR = #4001 - N " " COUNT DEFINES THE NUMBER OF WORDS TO BE MOVED " " KONTROL(13:12) DEFINES THE ACCESS-STATUS BITS FOR LOG-DATA " PAGE #10 " "********************************************************************* VAR SAVE: ARRAY[0..7] OF INTEGER; SAV_REG0: INTEGER; SAV_REG1: INTEGER; SAV_REG7: INTEGER; ADR_HEX22: INTEGER; EXT_DP: INTEGER; DESTIN_START: INTEGER; DESTIN_LAST: INTEGER; ADR_HEX40: INTEGER; ADR_HEX21: INTEGER; ADR_HEX3A: INTEGER; ADR_HEX100: INTEGER; NO_INTERRUPT: INTEGER; ADR_HEX3B: INTEGER; C_RECORD_ARRAY: ARRAY[0..#10] OF INTEGER; LOG_PAGE1: INTEGER; LOCAL_COUNT: INTEGER; LABEL PF_REENTRY; LABEL CONTINUE; LABEL NO_INT_ENTRY; LABEL MON_ENTRY; BEGIN R7=>SAVE[7]; STC(6,ADDRESS(SAVE[7])=>R7); OUTNEWLINE(R6); OUTTEXT(ADDRESS('TEST 8 RUNNING (:0:)')=>R3,R6); OUTNEWLINE(R6); FLUSHOUT(R6); "MAP IN LOG_PROG_PAGE0 AS DATAPAGE #20 #0FC0=>R1; SIO(R0,R1); "READ PHPAGE OF LOGPROGPAGE 0 #0FA0=>R1; CAD; CIO(R0,R1); "MAP IN THIS PHPAGE AS LOGDATAPAGE 20 R0=>EXT_DP; IF DICA=>R0=0 THEN CAE; "SAVE LOGPROGLOCATIONS HEX 22 ,HEX 3B, HEX 40, HEX 100,HEX 21, HEX 3A #8022=>R7; R7@INTEGER=>R0=>ADR_HEX22; #803B=>R7; R7@INTEGER=>R0=>ADR_HEX3B; #8040=>R7; R7@INTEGER=>R0=>ADR_HEX40; #8100=>R7; R7@INTEGER=>R0=>ADR_HEX100; #8021=>R7; R7@INTEGER=>R0=>ADR_HEX21; #803A=>R7; R7@INTEGER=>R0=>ADR_HEX3A; #8022=>R7; #0=>R1; R1=>R7@INTEGER; R7-1; R1=>R7@INTEGER; #803B=>R7; LOCATION(PF_REENTRY)=>R0; R0=>R7@INTEGER; R7-1; R0=>R7@INTEGER; GOTO CONTINUE; MON_ENTRY: "MON 64 ENTRY " SET LEVEL IN CONTEXT RECORD TO VALUE IN REG 4, " AND SET PSW11 ACCORDINGLY R4 EXTRACT 4; R4 SHIFTLL 4; #FFDD=>R7; R7@INTEGER=>R7; R7+#C; "R7 POINTS NOW AT PSW IN CONTEXT REC. R7@INTEGER=>R0; IF R4=0 THEN BEGIN #F7FF=>R1; R1 AND R0=>R0=>R7@INTEGER; "CLEAR PSW11 IN CONTEXT RECORD END ELSE BEGIN #0800=>R1; R1 IOR R0=>R0=>R7@INTEGER; "SET PSW11 IN CONTEXT RECORD END; R7+1; "R7 NOW POINTS AT EXR IN CONTEXT RECORD R7@INTEGER=>R0; #FF0F=>R1; R0 AND R1=>R1; R1 IOR R4=>R1; R1=>R7@INTEGER; "EXR IN CONTEXT STACK := OLD VALUE, "WITH NEW LEVEL RTM(0,0); CONTINUE: "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; ":::::::::::::::::::::::::::::::::::::::::: INIT_DTTS(R6); "MAP IN PHYS-DATA-PAGES #20->#5B ", FULL ACCESS , AS LOG-DATA-PAGES "2->#3D EXT_DP=>R3; #0FA0=>R6; CIO(R3,R6); "MAP OUT LOG-DATA-PAGE #10 . #0F90=>R3; SIO(R0,R3); "R0:= PHYS-PAGE OF LOG-DATA-PAGE #10 R0 SHIFTRL 2; R0 SHIFTLL 2; KONTROL=>R4; R4 SHIFTRL #C; R4 EXTRACT 2; "R4:= ACCESS STATUS BITS FOR LOG-DATA- R0+R4=>R4; "PAGE #10 CIO(R4,R3); "WRITE PATTERN IN SOURCE AREA. #810=>R7; #800=>R1; #1010=>R0; WHILE R7<>R1 DO BEGIN R0=>R7@INTEGER; R7-1; R0-1; END; "CLEAR LOCATIONS #3F00->3FFF (DESTINATION AREA) #3F00=>R7; #4000=>R0; 0=>R1; WHILE R0<>R7 DO BEGIN R1=>R7@INTEGER; R7+1; END; "PREPARE MONITOR_CALL #8040=>R7; LOCATION(MON_ENTRY)=>R0=>R7@INTEGER; #8100=>R7; #FFFF=>R0=>R7@INTEGER; LEVEL=>R4 EXTRACT 4; "NEW LEVEL := LEVEL MON(064); "PREPARE REGISTERS FOR MOVM #800=>R0; #4001=>R1; KONTROL=>R2 EXTRACT 5; R1-R2=>R1;