1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-26 17:03:20 +00:00

NEWDEC - DECtape converter.

This commit is contained in:
Lars Brinkhoff
2018-12-10 10:24:15 +01:00
parent 0c1739f414
commit a7115b9f07
3 changed files with 148 additions and 0 deletions

View File

@@ -1533,3 +1533,7 @@ expect ":KILL"
# IBMASC
respond "*" ":midas sys3;ts ibmasc_sysen1;ibmasc\r"
expect ":KILL"
# NEWDEC
respond "*" ":midas sys3;ts newdec_sysen1;newdec\r"
expect ":KILL"

View File

@@ -195,6 +195,7 @@
- MUNCH, TV-munching square.
- NAME, shows logged in users and locations, aka FINGER.
- NETIME, network time dragon.
- NEWDEC, DECtape converter.
- NICNAM/NICWHO, look up someone in the Arpanet directory.
- NIMLIN, a game of unknown features.
- NODIPS, SUDS wirelister (without DIP definitions).

143
src/sysen1/newdec.18 Executable file
View File

@@ -0,0 +1,143 @@
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
 ð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒð0`Áƒ