On 11/25/2012 06:11 PM, Eric Smith wrote:
I wrote about formatting TU58 tapes:
I think it would be easier to use the same
[stadard TU58)
electronics. The only issue is that I think a small modification
might be necessary to produce the "mark" waveforms used at BOT, EOT,
and in IRGs. If that does prove to be necessary, it should be a very
minor addition, and shouldn't affect normal operation of the drive.
After further study, I'm fairly certain that no hardware modification
would be required.
Does anyone have a new (unused) blank TU58 cartridge that they'd be
willing to make available for research? The tech manual doesn't give
quite enough detail of the tape format, and reverse-engineering the
firmware won't reveal certain aspects such as the lenghts of the
gaps. A pristine factory-formatted tape would be the most reliable
source of that information. Once the tape has been written in the
field, the resulting gap lenghts may vary.
Eric
You really do need optical EOT and BOT sensors in the loop and the
standard TU58 does not use them.
It's not only gaps, also address marks as TU58 is block addressable at
the 128 byte interval.
First step is a full reverse engineer of the firmware. I stopped at the
level needed to understand the IO
to the host rather than what I did to play with the tape as I knew that
would be very bit level involved.
Here is the preamble and first bits as I disassembled it back about
'91ish, I sopped due to lack of need
and preserved the results.
NOTE: one must understand how the 8155 works to understand the ports and
bits. Also same for the 8085
as the designers were clever in using IO (SID and SOD pins) and
interrupt flag pins as IO. An example RST7.5
pin will latch and interrupt pulse and must be reset with the SIM
instruction and the corect bit mask. The 6.5
and 5.5 pins must go high and remain high till recognized (as an
interrupt) or read via the RIM instruction.
the 8085 has one register that is not in the 8080 and that is read and
written to by using the RIM and SIM
instructions and what the bits do are more than what might be face value.
; TU58 ROM CODE
;
; must fit in 2716 (2k bytes)
;
DPORT EQU 08H ;I/O TO HOST
CSR EQU 20H ;8155 CSR
PORTA EQU 21H ;PORT A <INPUTS>
PAWRT EQU 01H ; PA-0 WRT-PERMIT-L
PAVEL EQU 02H ; PA-1 VELTP-H
PABT EQU 04H ; PA-2 BCART-L
PAAT EQU 08H ; PA-3 ACART-L
PARUN EQU 10H ; PA-4 RUNTP-L
PAZ0 EQU 20H ; PA-5 ZERO (GROUNDED)
PABSW EQU 40H ; PA-6 BOOT-SW-L
PAMRK EQU 80H ; PA-7 MARK-H
;
PORTB EQU 22H ;PORT B <CONTROLS>
PBRUN EQU 01H ; PB-0 RUN-L
PBWEN EQU 02H ; PB-1 WRTEN-H
PBREW EQU 04H ; PB-2 REVERSE-H
PBDSEL EQU 08H ; PB-3 SEL-DRV-B-L
PBTSEL EQU 10H ; PB-4 SEL-TR0-L
PBGAIN EQU 20H ; PB-5 GAIN-REDUCE-L
PBERA EQU 40H ; PB-6 ERASE-EN-L
PB3FST EQU 80H ; PB-7 30IPS-H
;
PORTC EQU 23H ; PORT C
PCSTI EQU 08H ; PC-3 SELF TEST INDICATOR
;
TIML EQU 24H
TIMH EQU 25H
;
; SID LINE IS RD-DATA-H
; SOD LINE IS WR-DATA-H
;LOC 3CH RST7.5 RD-STROBE-H
;LOC 34H RST6.5 OBF-H
;LOC 2CH RST5.5 IBF-H
;LOC 24H TRAP <BREAK DETECT>
;
; RSP packet identifiers
;
PDATA EQU 01H ; DATA PACKET
CTLCMD EQU 02H ; CONTROL OR COMMAND
PINIT EQU 04H ; INIT
BSTRP EQU 08H ; BOOTSTRAP
CONTF EQU 10H ; CONTINUE
XON EQU 11H ; XON FLOW CONTROL
XOFF EQU 13H ; XOFF FLOW CONTROL
;
ORG 0000H
;
RESET: LXI SP,STKTOP
IN PORTA
ANI PABSW ; check for boot sw-L
JZ J0E5
CALL S013
CALL 077D
JMP 026C
S013: XRA A
STA RAM00
S017: LXI H,0153
SHLD RAM01
MVI A,4D
SIM
EI
JMP J0045
TRAP: DI ;break detect (trap 24h)
LXI SP,STKTOP ;reset stack
IN DPORT ;clear io port
MVI A,FD
INT55: OUT PORTB ;IBF (int5.5 2Ch)
MVI L,05
JMP J005D
NOP
INT65: PUSH PSW ;OBF (INT6.5 34h)
PUSH H
IN DPORT
LHLD RAM01
PCHL
INT75: MVI A,10 ;RDstrobe (int7.5 3Ch))
SIM
RIM
RLC
MOV A,B
RAR
MOV B,A
RET
J0045 MVI A,FE
OUT CSR
MVI A,FD
OUT PORTB
IN PORTC
ORI 01
OUT PORTC
MVI A,0C
STA 20AD
XRA A
STA 20A2
RET
J005D CALL S0D2
RIM
ANI 20
JZ J05D
DCR L
JZ 026C
IN DPORT
CPI 04 ;check for init
JNZ 005D
CALL 0013
STA 20B6
LXI SP,STKTOP
CALL 027E
LXI H,0000
SHLD 20B4
SHLD 2003
MVI A,4D
SIM
EI
J08A CALL 030A
CALL 00D2
LDA 20A2
ANI 80
JZ 008A
LDA 2007
CPI 02 ; control/cmd
JNZ 026C
LDA 2009
CPI 0B ;
MVI A,D0
JNC 0766
LDA 2009
LXI H,00BA ; table address?
RLC
My 2 cents is look at the code for the TU58 emulator and build hardware
around that using solid state
memories. FYI: making the memories large is pointless as most of the
VAX and PDP-11 drivers ASSUME
the devices are 256K bytes per drive (512 blocks) and will not use
larger unless you can find the source
and rebuild them.
Allison