1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 07:19:57 +00:00

Fix ITS not to use DF10C 22-bit addressing on a KA10.

Use 21-bit addressing instead.  This an MIT modification of a DF10 to
store three bits of address inverted in the word count.

Also adapted the code for the RP10 case to save two instructions.
This commit is contained in:
Lars Brinkhoff 2019-06-26 18:16:03 +02:00
parent aa3c3a58f5
commit 1ca678c9f5

View File

@ -4031,6 +4031,11 @@ QECC: MOVSI A,%HRDCL(Q) ;RESET ERROR STATUS IN DRIVE
SKIPN A,QICWA+1 ;GET ADDRESS OF LAST WORD READ SKIPN A,QICWA+1 ;GET ADDRESS OF LAST WORD READ
JRST 4,.-1 ;CHANNEL OUGHT TO HAVE STORED CONTROL WORD BY NOW JRST 4,.-1 ;CHANNEL OUGHT TO HAVE STORED CONTROL WORD BY NOW
SOS J,A SOS J,A
IFN KA10P,[
;BE VERY ANNOYING ABOUT THIS
.ERR RH10 ECC NOT UPDATED FOR KA10
BUG HALT,[RH10 ECC NOT UPDATED FOR KA10]
]
TDZ J,[177+.BM $DFCWA] ;J := ADDRESS OF FIRST WORD IN LOSING SECTOR TDZ J,[177+.BM $DFCWA] ;J := ADDRESS OF FIRST WORD IN LOSING SECTOR
LDB A,[$DFCAD QIOWD] LDB A,[$DFCAD QIOWD]
SUBM J,A SUBM J,A
@ -4239,15 +4244,19 @@ IFN RP10P,[
DATAO DPC,E ;START DISK DATAO DPC,E ;START DISK
];RP10P ];RP10P
IFN RH10P,[ IFN RH10P,[
MOVE T,[-2000_4,,QRCBUF-1] ;DF10-C CHANNEL PROGRAM IFN KA10P,MOVE T,[-2000,,QRCBUF-1]
IFN KL10P,MOVE T,[-2000_4,,QRCBUF-1] ;DF10-C CHANNEL PROGRAM
IFE KA10P+KL10P, .ERR WHAT KIND OF DF10 DO YOU HAVE?
MOVEM T,RCIOWD MOVEM T,RCIOWD
SETZM RCIOWD+1 SETZM RCIOWD+1
MOVEI T,RCIOWD MOVEI T,RCIOWD
MOVEM T,RCICWA MOVEM T,RCICWA
SETZM RCICWA+1 SETZM RCICWA+1
IFN KL10P,[
SWPUA ;DUMP CACHE SWPUA ;DUMP CACHE
CONSZ 200000 ;IT'S INEFFICIENT, BUT WHAT THE HELL CONSZ 200000 ;IT'S INEFFICIENT, BUT WHAT THE HELL
JRST .-1 JRST .-1
]
CONO DSK,%HOCLR+%HORAE+%HOATN+DSKCHN CONO DSK,%HOCLR+%HORAE+%HOATN+DSKCHN
MOVSI A,%HRADR(Q) MOVSI A,%HRADR(Q)
HRR A,E ;HEAD AND SECTOR (CYL DOESN'T CHANGE) HRR A,E ;HEAD AND SECTOR (CYL DOESN'T CHANGE)
@ -4822,14 +4831,12 @@ IFN RP10P,[
QINT6A: IORI T,7000+QICWA ;DON'T STOP FOR PARITY ERRORS (PLUS INITIAL CHNL ADR) QINT6A: IORI T,7000+QICWA ;DON'T STOP FOR PARITY ERRORS (PLUS INITIAL CHNL ADR)
MOVEM T,QCHPRG MOVEM T,QCHPRG
DPB Q,[DUNFLD+QCHPRG] DPB Q,[DUNFLD+QCHPRG]
HLLZS QIOWD LSH R,10.
DPB R,[121000,,QIOWD] HLR E,R ;MA15-17 IN E
LDB E,[100300,,R] ;MA15-17 SUBI R,1
HRRM R,QIOWD
TRC E,7 TRC E,7
DPB E,[410300,,QIOWD] ;SET UP HIGH ADDR BITS. DPB E,[410300,,QIOWD] ;SET UP HIGH ADDR BITS.
MOVE TT,QIOWD
SOS TT
HRRM TT,QIOWD
SETZM QIOWD+1 SETZM QIOWD+1
MOVEM Q,QSDU MOVEM Q,QSDU
MOVE E,QSGL(C) MOVE E,QSGL(C)
@ -4943,11 +4950,23 @@ QINT6A: IORI T,QICWA_6 .SEE $HCICWA
TLO T,%HRCTL(Q) TLO T,%HRCTL(Q)
MOVEM T,QCHPRG MOVEM T,QCHPRG
MOVEM Q,QSDU MOVEM Q,QSDU
IFN KL10P,[
LSH R,10. ;ASSEMBLE DF10-C CONTROL WORD LSH R,10. ;ASSEMBLE DF10-C CONTROL WORD
SUBI R,1 SUBI R,1
MOVNI E,2000 MOVNI E,2000
DPB E,[$DFWC R] DPB E,[$DFWC R]
MOVEM R,QIOWD MOVEM R,QIOWD
]
IFN KA10P,[
LSH R,10.
HLR E,R ;MA15-17 IN E
SUBI R,1
HRLI R,-2000
TRC E,7
DPB E,[410300,,R] ;SET UP HIGH ADDR BITS.
MOVEM R,QIOWD
]
IFE KA10P+KL10P, .ERR RH10 NEEDS UPDATING FOR STRANGE CPU
SETZM QIOWD+1 SETZM QIOWD+1
MOVE E,QSGL(C) MOVE E,QSGL(C)
PUSHJ P,QPOSR PUSHJ P,QPOSR