Directory of image this file is from
This file as a plain text file
*20 ///KOSSTRAN / /PROGRAM TO CONVERT A /PDP-12 APAMOS II CELL DATA TAPE /TO A SPECIAL LINC /TAPE SUITABLE FOR TRANSLATION /BY PRCT12-F INTO A PDP-8 /TAPE WHICH CAN THEN BE USED /TO WRITE TICAS RECORDS /ONTO 7 TRACK MAG TAPE / /-------------------------- /FINAL TICAS MAG TAPE FORMAT / /HEADER LINE FORMAT (37 BYTES) / /WAVELENGTH 4 BYTES /ROWS 7 BYTES (4 NULLS) /COLS 10 BYTES (7 NULLS) /ATTRIBUTE 3 BYTES (IM.) /OBJECT 3 BYTES (CL.) /CELL NAME 8 BYTES /CRLF 2 BYTES (15,12) / / /DATA LINE FORMAT (18 BYTES) / /DATA ELEMENTS 16 (4 BYTES EACH) /CRLF 2 BYTES (15,12) / /------------------------------ / /SPECIAL LINC TAPE CHARACTER FORMAT /IS 6 BIT ASCII HALF WORD PACKED /EOF IS SIGNALED WITH 77 /EOT IS SIGNALED WITH 77,77 / /---------------------------------- / /APAMOS II DATA TAPE FORMAT / /DIRECTORY IS IN BLOCKS 1-10 /32 DIRECTORY ENTRYS PER BLOCK /NULL ENTRIES ARE SET TO ZERO /ALL DIRECTORYS FULLY PACKED /THUS FIRST ZERO ENTRY IS END. / /DIRECTORY FOMAT /WORD CONTENTS / 0 C\E / 1 L\L / 2 N\A / 3 M\E / 4 NO. (12 BIT NUMBER) / 5 W\A (WAVELENGTH) / 6 V\E / 7 BLK (STARTING BLOCK / /----------------------------------- / / / /DATA IS PRECEEDED BY A HEADER BLOCK / /HEADER BLOCK FORMAT / / IMPORTANT STUFF ONLY / / 35 NUMBER OF BLOCKS / 36 NUMBER OF COLUMNS / 37 NUMBER OF ROWS / /--------------------------- /BUFFER LOCATIONS (SEGMENT 7) /DIRECTORY 3400-3777 /INPUT 3000-3377 /OUTPUT 2400-2777 / /LOG TABLE IN SEGMENT 6 SEGMNT 5 *20 /===================================== / INITIAL KEYBOARD INTERACTION CLR AXO / LIF 4 MESOUT KOSMES /MAKE LOG TABLE IN SEGMENT 6 JMP SETLOG / /INPUT TAPE RESTAR, LIF 4 MESOUT INPMES /MOUNT INPUT TAPE /OUTPUT TAPE JMP OUTTAP /DIRECTORY SETUP JMP ININIT /================================= / MAIN PROGRAM LOGIC / DOACEL, JMP NXTCEL /NEXT ENTRY JMP ENDALL /DONE JMP GETCEL /SETUP CELL / JMP HEADER /HEADER LINE / NEWLIN, JMP MOVCRL /MOVE CRLF CLR STC LINCNT /NOW DATA VALUES NXDAT, JMP GETDAT JMP ENDDAT /FINISHED CELL /DATA IN FAC /AND IN CURVAL JMP GETLOG SETWRD 400 JMP CLRNUM OUTPUT NUMBUF LDA I 4 JMP MOVNUM /4 BYTES OUT /CHECK OUTPUT LINE COUNT LDA I 1 ADM I LINCNT, 0 SAE I 20 JMP NXDAT JMP NEWLIN /CRLF FIRST / /END OF DATA, WRITE EOF / ENDDAT, LDA I LASCHR, 0 SAE I 45 JMP MOVCRL JMP MOVMRK JMP DOACEL /NEXT CELL / /END OF DIRECTORY ENDALL, JMP MOVMRK /SECOND EOF JMP WRTBLK /JUST IN CASE JMP RESTAR /RUN AGAIN /============================== / HANDLERS FOLLOW /INTITIALIZE INPUT TAPE / ININIT, SET 1 0 LDA I 7001 STC DIRBLK STC DIRCNT LDA I 40 STC ENTCNT JMP 1 / /GET NEXT DIRECTORY / NXTDIR, LDF 7 RDC 10 DIRBLK, 7001 LDA I 1 ADD DIRBLK STC DIRBLK LDA I 3370 STC DIRPTR ADD ONE STC ENTCNT LDA I ONE, 1 ADM I DIRCNT, 0 SAE I 11 XSK I 0 JMP 0 / /GET NEXT CELL NAME FROM DIRECTORY / NXTCEL, SET 1 0 LDA I 1 ADM I ENTCNT, 40 SAE I 41 JMP .+3 JMP NXTDIR /NEXT DIRECTORY JMP 1 /END OF ENTRIES /NEXT ENTRY OK LDA I CELNAM-1 STC 3 LDA I 10 ADM I DIRPTR, 3370 STC 2 LDF 7 LDA 2 AZE I JMP 1 STA I 3 LDA I 2 STA I 3 LDA I 2 STA I 3 LDA I 2 STA I 3 LDA I 2 STA I 3 /NUMBER LDA I 2 STA I 3 /WAVE LDA I 2 STA I 3 / " LDA I 2 STA I 3 /BLOCK / XSK I 1 JMP 1 / /READ A CELL BLOCK INTO CORE / RDECEL, SET 3 0 LDA I 1020 AXO LDA I 7000 TMA RDC 10 CELBLK, 0 CLR AXO SET I 15 2777 /DATA POINTER ADD ONE ADD CELBLK STC CELBLK JMP 3 / /MOVE HEADER INFO / HEADER, SET 1 0 /WAVELENGTH SET I 2 4\WAV-1 SET I 3 -4 LDH I 2 JMP FIL57 XSK I 3 JMP .-3 / /MOVE ROWS AND COLUMN TEXT / SETWRD 300 JMP CLRNUM SFLOAT ROWS OUTPUT NUMBUF LDA I 7 JMP MOVNUM SFLOAT COLS OUTPUT NUMBUF LDA I 12 JMP MOVNUM / /MOVE ATTRIBUTE AND OBJECT TEXT / SET I 2 4\ATTX-1 SET I 3 -6 LDH I 2 JMP FIL57 XSK I 3 JMP .-3 / /MOVE NAME TEXT / SFLOAT CELNUM SETWRD 400 JMP CLRNUM OUTPUT NUMBUF / SET I 2 4\CELNAM-1 SET I 3 -4 LDH I 2 JMP FIL57 XSK I 3 JMP .-3 LDA I 4 JMP MOVNUM JMP 1 / /MOVE CRLF TEXT / MOVCRL, SET 1 0 LDA I 45 JMP FIL57 JMP 1 / /MOVE TEXT FROM NUMBER BUFFER / MOVNUM, SET 10 0 COM STC 11 SET I 2 4\NUMBUF-1 LDH I 2 SAE I 40 JMP .+3 ADA I 20 JMP FIL57 XSK I 11 JMP .-10 JMP 10 / /CLEAR NUMBER BUFFER / CLRNUM, CLR STC NUMBUF STC NUMBUF+1 STC NUMBUF+2 STC NUMBUF+3 STC NUMBUF+4 JMP 0 / /GET A LOG VALUE / GETLOG, SET 1 0 LDA I LOGFLG, 0 APO I JMP 1 /DO LOG LDA I CURVAL, 0 BSE I 2000 STC 6 LDF 6 LDA 6 LDF 7 STC CURVAL SFLOAT CURVAL JMP 1 / /STORE HALF WORD INTO OUTPUT BUFFER / FIL57, SET 17 0 LDF 7 STA LASCHR STH I 16 /CHECK FOR BUFFER OVER FLOW LDA 16 SAE I 6777 JMP 17 JMP WRTBLK JMP 17 / /WRITE OUT THE OUTPUT BUFFER /THEN CLEAR BUFFER / WRTBLK, SET 14 0 LDA I 1020 AXO LDA I 6400 TMA WRC OUTBLK, 0 LDA I 1 ADM OUTBLK SET I 16 2377 SET I 13 -400 CLR AXO STA I 16 XSK I 13 JMP .-2 SET I 16 4\2400-1 JMP 14 / /GET A DATUM FROM INPUT BLOCK / GETDAT, SET 1 0 LDA 15 SAE I 3377 SKP JMP RDECEL /NEXT BLOCK /COUNT ROWS LDA I 1 ADM I CURCOL, 0 COM ADA I COLS, 0 AZE I JMP OKDAT APO I JMP OKDAT LDA I 1 STC CURCOL ADD ONE ADM I CURROW, 0 SAE I ROWS, 0 SKP JMP 1 /END OF CELL / OKDAT, LDA I 15 STC CURVAL SFLOAT CURVAL XSK I 1 JMP 1 / /CHECK THE OUTPUT TAPE FOR ENOUGH /ROOM LEFT / CHKOUT, SET 1 0 LDA OUTBLK COM ADA I 1000 STC FREBLK LDA ROWS MUL 4\COLS ROL 5 BCL I 37 STC QT QAC SCR 7 ADA I QT, 0 COM ADA I FREBLK, 0 APO I JMP 1 /ENOUGH ROOM //OUTPUT TAPE IS FULL /WRITE EOF AND GET NEW TAPE JMP MOVMRK JMP MOVMRK JMP WRTBLK LIF 4 MESOUT FULMES JMP OUTTAP JMP 1 /OK TO CONTINUE / / /GET A CELL SET UP FROM THE DIRECTORY / GETCEL, SET 17 0 LDA BLOCK STC CELBLK /HEADER JMP RDECEL /READ A BLOCK LDF 7 LDA 3036 STC ROWS LDA 3037 STC COLS STC CURCOL STC CURROW JMP RDECEL /DATA BLOCK / /CHECK OUTPUT TAPE CONDITION JMP CHKOUT JMP 17 / /MOVE EOF MARK MOVMRK, LDA I 77 STH I 16 JMP 0 / /OUTPUT TAPE SETUP HANDLER / OUTTAP, SET 3 0 LIF 4 INTRAC I0 OUTMES / OUTINI, CLR STC OUTBLK JMP WRTBLK STC OUTBLK JMP 3 / I0, T0 J0 T0, 0 J0, JMP OUTINI JMP OUTINI / / /LOG SETUP INTERACTION / SETLOG, CLR STC LOGFLG LIF 4 INTRAC L0 LOGQES / L0, T1 J1 T1, YES NO 0 J1, JMP RESTAR JMP YESLOG JMP RESTAR JMP SETLOG / YESLOG, CLR COM STC LOGFLG /GET MAX INPUT VALUE MAXVIN, LIF 4 INTRAC L1 INQES / L1, T0 J2 J2, JMP MAXVIN JMP MAXVOT / MAXVOT, STORE MAXIN MAXOTQ, LIF 4 INTRAC L2 OTQES / L2, T0 J3 J3, JMP MAXOTQ JMP MAKTAB / MAKTAB, STORE MAXOUT SET I 6 2000 /SET ZERO VALUE FIX FAC ISTOR1 LGVAL LDA I LGVAL, 0 LDF 6 STA 6 / /DO TABLE UP TO END FZER STORE THSLOG / NXLOG, LOAD FONE FADD THSLOG STORE THSLOG FDIV MAXIN JMP LOG10 NOP FAPO FCOMP FMUL HUN FADD FHALF FIX FAC ISTOR1 LGVAL LDA LGVAL STA I 6 / LOAD THSLOG FSUB MAXIN FAZE JMP NXLOG LDF 7 JMP RESTAR /DONE TABLE / / /VARIABLES / THSLOG, 0 0 0 MAXIN, 0 0 0 MAXOUT, 0 0 0 /DIRECTORY ENTRY CELNAM, 0 0 0 0 CELNUM, 0 WAV, 0 0 BLOCK, 0 / NUMBUF, 0 0 0 0 0 / / /ROUTINE TO CALCULATE COMMON LOG (BASE 10) /USES POLYNOMIAL APPROXIMATION / LOG10, STORE TEM /X SET 3 0 /CHECK IF X=0 FAZE SKP JMP 3 /ERROR RETURN / ADD TEM /EXPONENT ADA I -1 /DIV BY 2 STC EXP STC TEM /CLR EXPONENT LOAD TEM FMUL FP2 /1<X<10 / /CALCULATE X DEPENDENT FACTOR IN /POLYNOMIAL APPROXIMATION / STORE TEM FADD SQRT10 STORE XFAC LOAD TEM FSUB SQRT10 FDIV XFAC STORE XFAC / /DO POLYNOMIAL APPROXIMATION / LOAD C5 JMP MULT FADD C3 JMP MULT FADD C1 JMP MULT+2 FADD FHALF STORE TEM / /ADD IN EXPONENT AS MULTIPLE OF LOG 2 SFLOAT EXP FMUL LOG2 /LOG(10) 2 FADD TEM XSK I 3 JMP 3 / MULT, FMUL XFAC FMUL XFAC JMP 0 / / TEM, 0 0 0 XFAC, 0 0 0 LOGE, 7776 /.4342945 3362 6756 LOG2, 7776 /.3010 2320 7126 FP2, 2 /2 2000 0 FP10, 4 /10 2400 0 FHALF, 0 2000 0 C5, 7776 /.2543275 2021 5633 C3, 7776 /.2773839 2160 1242 C1, 0 /.8690286 3363 6125 SQRT10, 2 /SQUARE ROOT 10 3123 /3.16227766 0540 EXP, 0 HUN, 7 3100 0 TWOHUN, 10 3100 0 FONE, 1 2000 0 / / /MESSAGES / KOSMES, TEXT .KOSSTRAN. 4543 INPMES, TEXT .MOUNT INPUT TAPE ON UNIT 1. 4543 OUTMES, TEXT .MOUNT OUTPUT TAPE ON UNIT 0:. FULMES, TEXT .OUTPUT TAPE FULL. 4543 ATTX, TEXT -IM.CL.- LOGQES, TEXT .LOG CONVERSION ?:. INQES, TEXT .MAX INPUT VALUE:. OTQES, TEXT .MAX OUTPUT VALUE:. / ///KOSSTRAN /N. DAVID CULVER /1974 NOLIST //PBLOCK /PARAMETER BLOCK ASSIGNMENTS / P0=3400 /DATA TYPE P1=3401 /CURRENT CHAN. P2=3402 /CURRENT CHAN. P3=3403 /DATA CHAN. P4=3404 /DATA CHAN. P5=3405 /CONTINGENCY CH P6=3406 /CONTINGENCY CH P7=3407 /TRUE CONTING. P10=3410 /FALSE CONTING. P11=3411 /CONTING. WIDTH P12=3412 /TRUE CONTING. P13=3413 /FALSE CONTING. P14=3414 /CONTING. WIDTH P15=3415 /CHAN INVERSION P16=3416 /CHAN INVERSION P17=3417 /NO.SAMP IN SEG P20=3420 /NO.SEG IN ENSM P21=3421 /NO. ENSEMBLES P22=3422 / P23=3423 /BASELINE PNTS P24=3424 /TAPE DELAY P25=3425 /ENSEMBL DELAY P26=3426 /CLOCK RATE P27=3427 /CLOCK TICS P30=3430 P31=3431 P32=3432 P33=3433 P34=3434 P35=3435 P36=3436 P37=3437 /TAPE SPEED UP P40=3440 /TAPE SPEED UP P41=3441 /TAPE SPEED UP / /FLOATING POINT VARIABLES / / P42=3442 /MULT FACTOR P43=3445 /UV PER VOLT P44=3450 /SEG. LENGTH P45=3453 /TEMP P46=3456 /BASELINE DELAY P47=3461 /CONTING WIDTH P50=3464 /BNDA1 MIN P51=3467 /BNDA1 MAX P52=3472 /BNDA2 MIN P53=3475 /BNDA2 MAX P54=3500 /BNDA3 MIN P55=3503 /BNDA3 MAX P56=3506 /BNDA4 MIN P57=3511 /BNDA4 MAX P60=3514 /BNDA5 MIN P61=3517 /BNDA5 MAX P62=3522 /BNDB1 MIN P63=3525 /BNDB1 MAX P64=3530 /BNDB2 MIN P65=3533 /BNDB2 MAX P66=3536 /BNDB3 MIN P67=3541 /BNDB3 MAX P70=3544 /BNDB4 MIN P71=3547 /BNDB4 MAX P72=3552 /BNDB5 MIN P73=3555 /BNDB5 MAX P74=3560 /PF MIN P75=3563 /PF MAX P76=3566 /TEMP P77=3571 /TRUE VOLTS P100=3574 /FALSE VOLTS P101=3577 /TEMP P102=3602 /V RMS P103=3605 /VRMS VAR / /FROM NOW ON DESCRIPTION IS FOUND OVER /THE DEFINED VARIABLE. / /AX,A1,A1CNT P104=3610 /AXVAR,A1VAR,A1CNTVAR P105=3613 /AY,A2,A1INT P106=3616 /AYVAR,A2VAR,A1INTVAR P107=3621 /BX,A3,A1MN P110=3624 /BXVAR,A3VAR,A1MNVAR P111=3627 /BY,A4,A2CNT P112=3632 /BYVAR,A4VAR,A2CNTVAR P113=3635 /CX,A5,A2INT P114=3640 /CXVAR,A5VAR,A2INTVAR P115=3643 /CY,B1,A2MN P116=3646 /CYVAR,B1VAR,A2MNVAR P117=3651 /DX,B2,A3CNT P120=3654 /DXVAR,B2VAR,A3CNTVAR P121=3657 /DY,B3,A3INT P122=3662 /DYVAR,B3VAR,A3INTVAR P123=3665 /EX,B4,A3MN P124=3670 /EXVAR,B4VAR,A3MNVAR P125=3673 /EY,B5,A4CNT P126=3676 /EYVAR,B5VAR,A4CNTVAR P127=3701 /FX,PF,A4INT P130=3704 /FXVAR,PFVAR,A4INTVAR P131=3707 /FY,DC,A4MN P132=3712 /FYVAR,DCVAR,A4MNVAR P133=3715 /GX,GX,A5CNT P134=3720 /GXVAR,GXVAR,A5CNTVAR P135=3723 /GY,GY,A5INT P136=3726 /GYVAR,GYVAR,A5INTVAR P137=3731 /HX,HX,A5MN P140=3734 /HXVAR,HXVAR,A5MNVAR P141=3737 /HY,HY,B1CNT P142=3742 /HYVAR,HYVAR,B1CNTVAR P143=3745 /IX,IX,B1INT P144=3750 /IXVAR,IXVAR,B1INTVAR P145=3753 /IY,IY,B1MN P146=3756 /IYVAR,IYVAR,B1MNVAR P147=3761 /JX,JX,PF P150=3764 /JXVAR,JXVAR,PFVAR P151=3767 /JY,JY,DC P152=3772 /JYVAR,JYVAR,DCVAR P153=3775 / / /COMMAND DECODER ASSIGNMENTS / / STOP=JMP 20 SCAN=JMP 21 STRSCN=JMP 21 INUNIT=JMP 22 STORIT=JMP 23 GETFIL=JMP 24 GETFST=JMP 24 GETNAM=JMP 25 GETNXT=JMP 25 DIRINI=JMP 26 DIRLST=JMP 27 ASSIGN=JMP 30 DEASS=JMP 31 OUTUNIT=JMP 32 LODBLK=JMP 33 RUNBLK=JMP 34 FIND=JMP 35 CALL=JMP 37 UNCALL=JMP 40 RUNPRG=JMP 41 INTRACT=JMP 42 MESOUT=JMP 43 DISK=JMP 44 TABSET=JMP 45 INTABLE=JMP 46 MISSNG=JMP 47 TABGET=JMP 50 TABPUT=JMP 51 TABZER=JMP 52 MAKDIL=JMP 53 TABINI=JMP 54 MGETNAM=JMP 55 MGETFIL=JMP 56 MSTORIT=JMP 57 / /COMMAND LOCATIONS. / FILNAM=2320 WORD1=2323 WORD2=2324 INBUF=2325 /COMMAND NUMBERS. YES=17 NO=20 SAMPL=21 TABLE=22 GO=23 NEXT=24 CU=25 CONT=26 ALL=27 AVG=30 A=31 B=32 C=33 D=34 E=35 F=36 G=37 H=40 II=41 J=42 PLOT=43 PRINT=44 T=45 / /EXEC3 ASSIGNMENTS / OPR=500 IOF=6002 ION=6001 EXC=1710 REXC=540 RLSW=514 RRSW=515 IOCALL=511 AWAKE=501 QUIT=505 PAUSE=507 IOCLR=502 SETCON=510 SETCLK=503 PLINE=524 READ=512 WRITE=532 SETDSK=513 /DEVICE ASSIGNMENTS / KBD=13 TLP=4 LPT=24 BPLT=30 PLT=25 CLK=2 SCOPE=26 /FLOATING POINT DEFINITIONS. / FAC=0 STARTE=740 FSUB=741 FMUL=742 FDIV=743 LOAD=744 STORE=745 SETWRD=746 INPUT=747 OUTPUT=750 ISTOR1=751 SQRT=752 DFLOAT=753 SFLOAT=754 FIX=755 FADD=756 ISTOR2=757 STARTF=760 FCOMP=761 FZER=762 FAPO=763 FAZE=764 RECIP=765 NEXTIN=766 SETIN=767 SETOUT=770 OUTBUF=771 PACFAC=772 SACFAC=773 FACAC=774 UNFIX=775 / ///KOSSTRAN /1974 (NDC)