From a7da3c6f54d90a6d1251e0af080af70fe5a98fb7 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 4 Apr 2015 09:26:23 -0700 Subject: [PATCH] SIGMA: Merge updates from Bob Supnik --- sigma/Design Notes on the Sigma 7.doc | Bin 25088 -> 29184 bytes sigma/sigma_disks.txt | 193 ++++++++++++++++++++++++++ sigma/sigma_map.c | 6 +- sigma/sigma_mt.c | 5 +- 4 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 sigma/sigma_disks.txt diff --git a/sigma/Design Notes on the Sigma 7.doc b/sigma/Design Notes on the Sigma 7.doc index fa42bb907269a3017409252d18009152d170e991..21a6769439bddaa4efa4c1befd9472371105e5e1 100644 GIT binary patch delta 8368 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 Nc$b>9jDl~F{tc-R*V6z1 delta 3995 zcmb`KU2Igx6@bs&-L=3izM3h$j0R@RXqe-?_Wj ze*}R@#`<>doH^&r%$b>UeUleW@=fzhb*xg-B~N5Ej|M)OnwnDSDsUGac*%@A!Oq%P zR#4>n;@7oD1a%6Mql-myrMJJg|EWt)UGk)JezJlEvOFqs`Dx>EG}j&pM(u!8nHcaC zJ9J2j*0Y~|+5CEm3eu%3ZM!rhCHS;Dhpuw^)y~&nvq+>SfpL4<@P6x;h=YUU6RCLI zQ(cDsPNKFbhUF7X>jwzV;~?K|aUO{HF=)@AS&+Ef%+yfJ@yt~1oBOqIpX!}i@fGX} zX4(1neyw)rMQW$_#CJ5`v4&uFIi6`h4AwRI>VCKSO%ie6e>6+v8`yoYP$W+6yX`QT zuS@u5zMCedqdWPp-%dovfB7e)JNbK#pTFZJxc@HwmCQ!<{NnpD?07Xo-FYny=pCZY z&i9(r(@MA7#5eTk>mMDzo|$jT!Th!(7p&PHwZ)O6Cg%PoQXDk9-M{7<$GwpEZooac zWW5Ou?cUQj?B2>hX-uX2;)7pz+&4B&nqrpK5D{sH7H9{(Wily~?#r9rHHpBwl}18( z`%0h`YM>TYgha~VCVT`*!Zrpkz}t{Xm`WiEp|D5>6haZa4_9C%JF^OEpcZ=Jc{mG` zx>%cEn(zLwWXNRs3E&gvb<-pqV~lErnQ<1>K|O4Q4mbo8a01T4Iq1$7>49h2webZa zXW%O20W>~KX@cD0ze;X+r_ezoEY*)`&L?HbzGD(bVF zWqtg{)Q_c^cHz7+@ww?-=8=6y-U7 zylba*Qhy4;@sxN-g3Q&?=zL}g<0n5CNB8L`aqq+5Egrh#bK`Ljl0@Pc`Wo`j2V8E#^J3;qWI64ZmR6!fK40h+eHY>= zOieK+FPc^vlwOI+*JM-<$^l+G`=m-XNRxCS>y!P`BLgx*Ynav^uia&T*Iu7kExWMY zc?Tblr+u_}I-}U_#`_3fVt71&t&X`H$q0TA;CYxadikB1N0+Q;P6rvkk8yfD%|Ucy z(k4BdY4%|9h}Sv9FvIW|(k|J`(-1?bgHa@d@>Pb~N&PtWkbD~#!&qx8=2^vbNtvsW z4a+V!*z})ZC?H!p1NQZna$C|;$UALIXV5mbj7`heP0Pw{MSRD!yxjgO?(6?K{+Ifx zxJeq(v?*EM@;?W5F|qSCNwu2n9nob$Q(%A6y0);~Q_0Q`W(KkxC*%ZY_3qeEVKVHK8=A)33R_P7 z;aod@`FBlU{w3Vx2v@}jXN+SN$Scy$bTPK>ij0lb z_}L+Ca#}y9DxFi=d@L-nSHF}Uu6be$cC7SBaG5>P{>}VPJ&pK{nDLHaAY>eSZBM=} z>FCZXVR&w?RM_uzylns55#7F)mi`B$A5V|;?Hn2$9(-&hwsml5SFCY0Q;8#&U+nm| zhTVI9dQGzL@@eBe*Il@Dgn!kwPuHcju3zhj`{Jgpx#__RZ0WWi6>A{0O9P|zX>Oj@ z;T2i-pWBMu>)XD(Fsz@Z`X9V)+gldYh8@@&4^8s$u=|g_Rpv-{Y`lMec>7PikAx~a z+P~TUabQh`9)s+B`*D9~j&45sULi&m&hn@|yzj6nwzu{r%nCa?uz7*e`RYVeOO=ZI zX=wQhm#N=7^&|2qXM9iw=zln`fF-7Urhauh^8TKlhhN*C@T2aV`?ooZHD%9@r(1XM JjIrHL`2U5hI}`u_ diff --git a/sigma/sigma_disks.txt b/sigma/sigma_disks.txt new file mode 100644 index 00000000..c8256270 --- /dev/null +++ b/sigma/sigma_disks.txt @@ -0,0 +1,193 @@ +Notes for the Sigma Disk Controllers + +Two patterns of disk controllers - "10 byte" sense controllers and "16 byte" sense controllers +All disks have 1024B (256W) sectors + + +model units/cylinders/heads/sectors type + +7240/7242 8 / 203 (3 spare) / 20 / 6 10 byte 24360 +7260/7261 15 / 203 (3 spare) / 20 / 11 16 byte 44660 +7270/7271 8 / 406 (6 spare) / 20 / 6 10 byte 48720 +7275/7276 15 / 411 (7 spare) / 19 / 11 16 byte 85899 +7265/7266 15 / 411 (7 spare) / 20 / 11 16 byte 90420 + +T3281/T3282 15 / 815 / 19 / 11 16 byte 170335 +T3281/T3283 15 / 815 / 19 / 17 16 byte 263245 +T3281/T3286 15 / 555 / 30 / 17 (16?) 16 byte +T3281/T3286F 15 / 555 / 60 / 17 (16?) 16 byte +T3281/T3288 15 / 822 / 5 / 17 16 byte 69870 + +header format 7240 726X/727X/T3281 + +bytes 0-3 flaw / 0 / C / H flaw / 0'CH / C / H +bytes 4-7 S / alt C / alt H / 0 S / alt CH / alt CL'alt H / 0 + + +sense status 7240/7270 + +bytes 0-3 0'CH / C / H / S most recent address +bytes 4-7 M'CS / diag / diag / diag seek intr + current sector +bytes 8-11 stat / stat + + 726X/7275 + +bytes 0-3 W'0'CH / C / H / S W = write protect, most recent address +bytes 4-7 M'R'CS / cnf / stat / 0 M = modifier, R = reserve/release mode +bytes 8-11 stat / stat / modi / fiers +bytes 12-15 check / bytes / 0'dh / dl 14-15 = difference + +sense byte 5-6 + + 7240,7270 + +0-15 header parity check bytes + + 726X, 7275, T3281 + +0 1 for dual access +1-3 device type + 5 = 7261 + 6 = 7266 + 7 = 7276, T3286 +4-7 device physical addr (cable position) + +0 device fault +1 write fault +2 loss of on cylinder +3 offset polarity +4 airflow loss +5 parity error on device ID byte +6 spindle speed fault +7 positioning servo faulT + +sense byte 7 + + 7240, 7270 726X, 7275 T3281 + +0-7 LSB of difference 0 physical address (unique) + +sense bytes 8-9 + + 7240, 7270 726X, 7275, T3281 + +0 data parity error check write error +1 check write error data check error +2 sector verif error IOP parity error +3 head verif error data overrun +4 cylinder verif error head addr incr err +5 sec addr !=0 @ hdr wr arm in motion err +6 diff sent to device order parity err +7 sector sel to device test mode err + +0 ctrl sel to device seek transfer err +1 head sel to device device unavailable +2 cyl sel sent to device head addr ver err +3 seek forward set sector addr ver err +4 read gate to device cyl addr ver err +5 write/erase to device 726X, 7275: 0 + T3281: ctrl overtemp +6 read cyl sel to device channel addr err +7 7240: not used missing on sect + 7270: MSB of diff + +sense bytes 10+ + +10-11 modifier bits +12-13 check bytes +14 0'diff high +15 diff low (absolute value) + + +operations 7240 726X + 7270 7275 + T3281 + +01 write x x +02 read 2 x x +03 seek x x +04 sense x x +05 check-write x x +07 reserve x +09 header write x x +0A header read x x +0F condition rls intr x +12 read 1 x x +13 select test mode x x +17 release x +1F condition rls intr x +23 release x +33 restore x x +83 seek with interrupt x x +B3 restore with interrupt x + + +TIO, SIO, HIO status + + all + +0 interrupt pending +1-2 device state + 00 = ready + 01 = not operational + 10 = reserved + 11 = busy +3 1 (automatic) +4 unusual end +5-6 controller state + 00 = ready + 01,10 = n/a + 11 = busy +7 0 + +TDV status + + 7240, 7270 726X,7275 T3281 + +0 data overrun 0 error corrected +1 flaw mark flaw mark flaw mark +2 sector unavailable programming err programming err +3 0 write prot err write prot err +4 header verif error IOP parity err IOP parity err +5 on cylinder operational err operational err +6 seek timeout error verification err verification err +7 header parity error header parity err header parity err + +AIO status + + 7240, 7270 726X, 7275, T3281 + +0 data overrun data overrun +1 0 attn int ack +2 0 rls int ack +3 0 0 +4 on sector interrupt on sector intr +5 on cylinder 0 +6 seek timeout error seek timeout error +7 0 0 + +operational status byte (SIO, HIO, TIO, TDV) + + all + +8 incorrect lnt +9 xmit data error +10 xmit memory err +11 mem addr err +12 IOP memory err +13 IOP ctrl err +14 IOP halt +15 0 + +operational status byte (AIO) + + all + +8 incorrect lnt +9 xmit data error +10 zero byte cnt intr +11 channel end intr +12 unusual end intr +13-15 0 + + diff --git a/sigma/sigma_map.c b/sigma/sigma_map.c index d9367327..8458b240 100644 --- a/sigma/sigma_map.c +++ b/sigma/sigma_map.c @@ -26,9 +26,9 @@ #include "sigma_defs.h" -#define BVA_REG (RF_NUM << 2) -#define BPAMASK ((cpu_tab[cpu_model].pamask << 2) | 0x3) -#define NUM_MUNITS (MAXMEMSIZE / CPU_MUNIT_SIZE) +#define BVA_REG (RF_NUM << 2) +#define BPAMASK ((cpu_tab[cpu_model].pamask << 2) | 0x3) +#define NUM_MUNITS (MAXMEMSIZE / CPU_MUNIT_SIZE) /* Sigma 8-9 memory status words */ diff --git a/sigma/sigma_mt.c b/sigma/sigma_mt.c index 19bc2ba3..268977f2 100644 --- a/sigma/sigma_mt.c +++ b/sigma/sigma_mt.c @@ -639,8 +639,9 @@ t_stat mt_detach (UNIT* uptr) { uint32 un = uptr - mt_dev.units; -if (!(uptr->flags & UNIT_ATTABLE)) return SCPE_NOATT; +if (!(uptr->flags & UNIT_ATTABLE)) + return SCPE_NOATT; uptr->UST = 0; sim_cancel (uptr + MT_REW); return sim_tape_detach (uptr); -} \ No newline at end of file +}