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`Áƒ