1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-07 08:57:06 +00:00
Files
PDP-10.its/src/sysen1/newdec.18
2018-12-10 19:36:13 +01:00

143 lines
2.2 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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