mirror of
https://github.com/PDP-10/its.git
synced 2026-02-07 08:57:06 +00:00
143 lines
2.2 KiB
Plaintext
Executable File
143 lines
2.2 KiB
Plaintext
Executable File
TITLE DEC-MAC TAPE CONVERTER
|
||
|
||
;THIS PROGRAM IS STARTED AT LOCATION GO
|
||
;AND TYPES "?" AFTER WHICH YOU ANSWER WITH A DIGIT 0-8
|
||
;THE DRIVE (OR 0 IF ALREADY ON DISK) OF A NEW FMT DECTAPE
|
||
;AND WRITES THE ENTIRE TAPE ONTO THE DISK AS FILE
|
||
;.TEMP. .FILE. IT THEN GROVELS OVER THE CRAP AND
|
||
;PRODUCES UP TO 22 FILES ON THE DISK BY THE SAME NAME
|
||
;AND EXTENSION AS THE ORIGINAL DEC TAPE. IT
|
||
;ALSO CLEANS THE COB-WEBBS OUT OF THE DISK DRIVE.
|
||
|
||
;IF FOR SOME REASON THE FILE .TEMP. .FILE. ALREADY
|
||
;EXISTS, START THE PROGRAM AT LOCATION FDIR
|
||
; OR INDICATE DRIVE "0"
|
||
|
||
|
||
UTIC==1
|
||
UTOC==2
|
||
TYI==3
|
||
TYO==4
|
||
|
||
A=1
|
||
B=2
|
||
C=3
|
||
D=4
|
||
P=5
|
||
|
||
GO: .OPEN TYI,[SIXBIT / TTY/]
|
||
.VALUE [ASCIZ /TYI?/]
|
||
.OPEN TYO,[SIXBIT / !TTY/]
|
||
.VALUE [ASCIZ /TYO?/]
|
||
.IOT TYO,["?]
|
||
.IOT TYI,A
|
||
SUBI A,"0 ;CHAR ZERO
|
||
JUMPL A,.-3
|
||
CAILE A,8 ;NUM 0-8 OK
|
||
JRST .-5
|
||
JUMPE A,FDIR ;0 MEANS DSK
|
||
.UBLAT A,
|
||
.VALUE [ASCIZ /UBLAT?/]
|
||
DPB A,[400,,TPI]
|
||
.OPEN UTIC,TPI
|
||
.VALUE [ASCIZ /TPI?/]
|
||
.OPEN UTOC,TPO
|
||
.VALUE [ASCIZ /TPO?/]
|
||
MOVEI A,111
|
||
GO1: MOVE B,[-2000,,BUF]
|
||
.IOT UTIC,B
|
||
MOVE B,[-2000,,BUF]
|
||
.IOT UTOC,B
|
||
SOJG A,GO1
|
||
.CLOSE UTIC,
|
||
.CLOSE UTOC,
|
||
MOVE A,TPI
|
||
.UDISMT A,
|
||
JFCL [ASCIZ /UNF?/]
|
||
FDIR: MOVEI P,PDL
|
||
PUSHJ P,OPEN
|
||
MOVEI A,100.
|
||
PUSHJ P,GETBLK
|
||
MOVE A,[BUF,,FILDIR]
|
||
BLT A,FILDIR+177
|
||
MOVEI A,0
|
||
FDIR1: SKIPE FILDIR+83.(A)
|
||
PUSHJ P,READ
|
||
CAIGE A,21.
|
||
AOJA A,FDIR1
|
||
.VALUE [ASCIZ /:KILL /]
|
||
|
||
READ: PUSH P,A
|
||
MOVE B,FILDIR+83.(A)
|
||
MOVEM B,UTOCO+1
|
||
HLLZ B,FILDIR+105.(A)
|
||
SKIPN B
|
||
MOVSI B,(SIXBIT /@/)
|
||
MOVEM B,UTOCO+2
|
||
MOVEI D,0
|
||
MOVE B,[440500,,FILDIR]
|
||
AOS A ;LOC 0 => FILE 1
|
||
RD2: ILDB C,B
|
||
AOS D
|
||
CAMN C,A
|
||
JRST FOUND
|
||
CAIL D,576.
|
||
.VALUE [ASCIZ /BLK?/]
|
||
JRST RD2
|
||
|
||
|
||
FOUND: MOVE A,D
|
||
.OPEN UTOC,UTOCO
|
||
.VALUE [ASCIZ /OUT?/]
|
||
PUSHJ P,GETBLK
|
||
LDB A,[101200,,BUF]
|
||
CAME A,D
|
||
GET: PUSHJ P,GETBLK
|
||
LDB A,[700,,BUF]
|
||
MOVNS A
|
||
MOVSS A
|
||
HRRI A,BUF+1
|
||
.IOT UTOC,A
|
||
HLRZ A,BUF
|
||
JUMPN A,GET
|
||
.CLOSE UTOC,
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
OPEN: .OPEN UTIC,UTICO
|
||
.VALUE [ASCIZ /TEMP?/]
|
||
POPJ P,
|
||
|
||
GETBLK:
|
||
READBK: PUSH P,A
|
||
SOS A
|
||
IMULI A,200
|
||
.ACCESS UTIC,A
|
||
MOVE A,[-200,,BUF]
|
||
.IOT UTIC,A
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
|
||
UTICO: SIXBIT / &DSK/
|
||
SIXBIT /.TEMP./
|
||
SIXBIT /.FILE./
|
||
|
||
UTOCO: SIXBIT / 'DSK/
|
||
0
|
||
0
|
||
|
||
PDL: BLOCK 69
|
||
BUF: BLOCK 2000
|
||
FILDIR: BLOCK 200
|
||
|
||
TPI: SIXBIT / &UT0/
|
||
SIXBIT /FOO/
|
||
SIXBIT /BAR/
|
||
|
||
TPO: SIXBIT / 'DSK/
|
||
SIXBIT /.TEMP./
|
||
SIXBIT /.FILE./
|
||
|
||
END GO
|