Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0071/eyes.mac
There are 2 other files named eyes.mac in the archive. Click here to see a list.
	TITLE  EYES -- A PROGRAM TO CONVERT AN ASCII FILE TO BRAILLE.
	SIXBIT /EYES/
BEGIN:	TTCALL 3,[ASCIZ/
SPECIFY FILE TO BE BRAILLED>/]
	MOVE   1,[SIXBIT/DSK/]	 ;ASSUME INPUT DEVICE IS DISK.
	MOVEM  1,INITCH+1	 ;MOVE IT TO FILE INIT SPECIFICATIONS.
	SETZM  LOKBLK+1 	 ;CLEAR WORD 2 OF LOOKUP BLOCK.
	SETZM  LOKBLK+2 	 ;CLEAR WORD 3 OF LOOKUP BLOCK.
	SETZM  LOKBLK+3 	 ;CLEAR WORD 4 OF LOOKUP BLOCK.
	SETZB  2,3		 ;CLEAR AC'S FOR PPN.
	SETZB  0,10		 ;CLEAR FILENAME AND TTY INPUT AC'S.
	MOVSI  1,-7		 ;MAXIMUM OF 6 CHARS IN FILENAME.
	MOVE   11,FILPTR	 ;MOVE FILENAME POINTER TO FAST MEMORY.
	TTCALL 4,10		 ;INPUT A CHAR TO AC 10, LINE MODE.
	JRST   .+2		 ;ON FIRST CHAR, SKIP.
FILEIN: TTCALL 0,10		 ;INPUT ANOTHER CHAR TO AC 10.
	CAIN   10,":"		 ;IS IT A ":"?
	JRST   GETDEV		 ;IF SO, JUMP TO GET DEVICE.
	CAIN   10,"."		 ;IS IT A "."?
	JRST   GETEXT		 ;IF SO, JUMP TO GET EXTENSION.
	CAIN   10,"["		 ;IS IT A "["?
	JRST   PPN		 ;IF SO, JUMP TO GET PPN.
	CAIN   10,015		 ;IS IT A CR?
	JRST   READY		 ;IF SO, JUMP TO INPUT FILE.
	AOBJP  1,FILEIN 	 ;IF MORE THAN 6 CHARS, IGNORE REST.
	CAIG   10,137		 ;IS THE CHAR LOWER CASE?
	ADDI   10,40		 ;IF NOT, CONVERT FOR SIXBIT.
	IDPB   10,11		 ;STORE THE CHAR IN AC 0 IN SIXBIT.
	JRST   FILEIN		 ;GET NEXT CHAR.
GETDEV: MOVEM  0,INITCH+1	 ;MOVE DEVICE SPECIFIED FOR FILE INIT
	JRST   BEGIN+7		 ;JUMP TO GET FILENAME.
GETEXT: MOVSI  1,-4		 ;MAXIMUM OF 3 CHARS IN EXTENSION.
	MOVE   11,EXTPTR	 ;MOVE EXTENSION POINTER TO FAST MEMORY.
	TTCALL 0,10		 ;INPUT A CHAR OF EXTENSION TO AC 10.
	CAIN   10,"["		 ;IS IT A "["?
	JRST   PPN		 ;IF SO, JUMP TO GET PPN.
	CAIN   10,015		 ;IS IT A CR?
	JRST   READY		 ;IF SO, JUMP TO INPUT FILE
	AOBJP  1,GETEXT+2	 ;IF MORE THAN 3 CHARS, IGNORE REST.
	CAIG   10,137		 ;IS THE CHAR LOWER CASE?
	ADDI   10,40		 ;IF SO, MAKE IT UPPER CASE.
	IDPB   10,11		 ;STORE THE CHAR IN AC 0.
	JRST   GETEXT+2 	 ;GET NEXT CHAR.
PPN:	MOVSI  1,-7		 ;MAXIMUM OF 6 DIGITS IN PROJECT NUMBER.
	TTCALL 0,10		 ;INPUT A DIGIT TO AC 10.
	CAIN   10,","		 ;IS IT A ","?
	JRST   PN		 ;IF SO, JUMP TO GET PROGRAMMER NUMBER.
	CAIN   10,"]"		 ;IS IT A "]"?
	JRST   PPN+1		 ;IF SO, IGNORE IT.
	CAIN   10,015		 ;IS IT A CR?
	JRST   READY-1		 ;IF SO, JUMP TO STORE PROJECT NUMBER.
	AOBJP  1,PPN+1		 ;IF MORE THAN 6 DIGITS, IGNORE REST.
	ANDI   10,7		 ;SAVE LAST 3 BITS.
	LSH    2,3		 ;MAKE ROOM IN AC 2,
	IOR    2,10		 ;AND STORE OCTAL DIGIT.
	JRST   PPN+1		 ;GET NEXT DIGIT.
PN:	MOVSI  1,-7		 ;MAXIMUM OF 6 DIGITS IN PROG. NUMBER.
	TTCALL 0,10		 ;INPUT A DIGIT TO AC 10.
	CAIN   10,"]"		 ;IS IT A "]"?
	JRST   PN+1		 ;IF SO, IGNORE IT.
	CAIN   10,015		 ;IS IT A CR?
	JRST   READY-2		 ;IF SO, JUMP TO STORE PPN AND DO INPUT.
	AOBJP  1,PN+1		 ;IF MORE THAN 6 DIGITS, IGNORE REST.
	ANDI   10,7		 ;SAVE LAST 3 BITS.
	LSH    3,3		 ;MAKE ROOM IN AC 3,
	IOR    3,10		 ;AND STORE OCTAL DIGIT.
	JRST   PN+1		 ;GET NEXT DIGIT.
	HRRM   3,LOKBLK+3	 ;STORE PROGRAMMER NUMBER,
	HRLM   2,LOKBLK+3	 ;AND PROJECT NUMBER IN LOOKUP BLOCK.
	PAGE
READY:	TTCALL 11,0		 ;CLEAR TTY INPUT BUFFER.
	MOVEM  0,LOKBLK 	 ;MOVE FILENAME TO LOOKUP BLOCK.
INITCH: INIT   0,17		 ;INITIALIZE CHANNEL, DUMP MODE, INPUT.
	0			 ;DEVICE DEPENDS ON USER.
	0			 ;NO BUFFERING.
	JRST   .+2		 ;ON ERROR, SKIP.
	JRST   .+3		 ;OK, CONTINUE.
	TTCALL 3,[ASCIZ/
?DEVICE DOES NOT EXIST.
/]
	JRST   BEGIN		 ;TRY AGAIN.
	LOOKUP 0,LOKBLK 	 ;PERFORM FILE LOOKUP.
	JRST   .+2		 ;ON ERROR, SKIP.
	JRST   .+3		 ;OK, CONTINUE.
	TTCALL 3,[ASCIZ/
?FILE NOT FOUND OR PROTECTION FAILURE.
/]
	JRST   BEGIN		 ;TRY AGAIN.
	SETZM  TYPFLE		 ;SET FILE TYPE FLAG TO NON-DATA TYPE.
	TTCALL 11,0		 ;CLEAR TTY INPUT BUFFER.
	TTCALL 3,[ASCIZ/
DATA FILE?(Y,N)>/]
	TTCALL 4,10		 ;INPUT A CHAR TO AC 10.
	TTCALL 11,0		 ;CLEAR TTY INPUT BUFFER.
	CAIN   10,"Y"		 ;IS A DATA FILE SPECIFIED?
	SETOM  TYPFLE		 ;IF SO, SET FLAG SO BLANKS NOT IGNORED
	INIT   1,0		 ;INITIALIZE CHANNEL, ASCII, OUTPUT.
;[DECUS] CHANGE LPT TO DSK
	SIXBIT /DSK/		 ;DEVICE IS LPT.
	XWD    OBUF,0		 ;SPECIFY OUTPUT RING HEADER BLOCK.
	WAIT   1,0		 ;ON ERROR, WAIT FOR INACTIVE DEVICE.
	JSP    13,BLOKIN	 ;GET A BLOCK OF DATA.
	JSP    16,BLINE 	 ;BLANK OUT THE BRAILLE LINE.
	MOVEI  17,STACK-1	 ;SET UP STACK POINTER.
	MOVEI  15,"."		 ;AC 15 WILL HOLD ASCII CODE FOR ".".
INCHAR: JSP    16,GETCHR	 ;GET A CHAR FROM FILE, PUT IN AC 10.
	CAIN   10,015		 ;IS IT A CR?
	JRST   INCHAR		 ;IF SO, IGNORE IT.
	CAIE   10,012		 ;IS IT A LF?
	JRST   .+3		 ;IF NOT, CHECK NEXT CHAR.
	JSP    7,SETUP		 ;IF SO, DONE WITH LINE.
	JRST   INCHAR		 ;THEN GET ANOTHER CHARACTER.
	CAIN   10,011		 ;IS IT A TAB?
	JRST   INCHAR		 ;IF SO, IGNORE IT.
	CAIE   10,040		 ;IS IT A BLANK?
	JRST   .+5		 ;IF NOT, JUMP AHEAD.
	SKIPN  TYPFLE		 ;IF A BLANK AND A DATA FILE, SKIP.
	JRST   INCHAR		 ;IF ANOTHER TYPE OF FILE, IGNORE BLANK.
	JSP    13,PUSHDN	 ;IF A DATA FILE, STACK ALL BLANKS.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	CAIG   10,037		 ;IS IT ANOTHER CONTROL CHARACTER?
	JRST   CTLCH		 ;IF SO, PROCESS IT.
	JSP    13,PUSHDN	 ;IF NOT, STACK THE PRINTABLE CHARACTER.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	PAGE
;A SUBROUTINE TO PROCESS CONTROL CHARACTERS EITHER BY TERMINATING THE
;LINE AND ALLOWING PAPER MOVEMENT OR BY SETTING UP THE CHARACTER TO
;BE PRINTED IN ARROW FORMAT.
CTLCH:	CAIN   10,014		 ;IS IT A FF?
	JRST   FF		 ;IF SO, JUMP TO PROCESS IT.
	CAIN   10,000		 ;IS IT NULL?
	JRST   INCHAR		 ;IF SO, IGNORE IT.
	CAIN   10,013		 ;IS IT A VT?
	JRST   VT		 ;IF SO, JUMP TO PROCESS IT.
	CAIE   10,033		 ;IS IT ESC?
	JRST   .+4		 ;IF NOT, JUMP AHEAD.
	MOVEI  10,"$"		 ;IF SO, ECHO AS A "$".
	JSP    13,PUSHDN	 ;STACK THE "$".
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	MOVEM  10,SAVE		 ;ECHO ALL OTHERS IN ARROW FORMAT.
	MOVEI  10,"^"		 ;MOVE "^" TO AC 10.
	JSP    13,PUSHDN	 ;STACK THE "^".
	MOVE   10,SAVE		 ;RESTORE THE CONTROL CHARACTER TO AC 10.
	ADDI   10,100		 ;CONVERT.
	JSP    13,PUSHDN	 ;STACK THE PRINTABLE CHARACTER.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	PAGE
;A SUBROUTINE WHICH WILL SET UP THE APPROPRIATE BRAILLE CELL(IN REVERSE)
;BY PLACING DOTS CORRECTLY IN THE BRAILLE LINE.
CELL:	MOVSI  11,-2		 ;2 COLUMNS IN 1 CELL.
LOOP:	IBP    14		 ;BYTE POINTER POINTS TO CORRECT COLUMN.
	MOVSI  2,-3		 ;3 ROWS IN 1 CELL.
LOOP1:	CAIGE  12,0		 ;IS A DOT PRESENT IN THIS POSITION?
	DPB    15,14		 ;IF SO, PUT THE DOT IN THE LINE.
	LSH    12,1		 ;SHIFT BRAILLE CODE FOR NEXT POSITION.
	ADDI   14,30		 ;ADD 30 TO ADDRESS POINTER FOR NEXT LINE.
	AOBJN  2,LOOP1		 ;IF NOT DONE WITH COLUMN, GET NEXT ROW.
	SUBI   14,110		 ;SET ADDRESS POINTER BACK TO FIRST ROW.
	AOBJN  11,LOOP		 ;IF NOT DONE WITH CELL, GET NEXT COLUMN.
	IBP    14		 ;INCREMENT BYTE POINTER FOR SPACING.
	JRSTF  0(16)		 ;RETURN.
	PAGE
;A SUBROUTINE TO INPUT A 128 (DECIMAL) WORD BLOCK FROM DISK.
BLOKIN: MOVEI  3,1200		 ;640 (DECIMAL) BYTES IN BLOCK.
	MOVEM  3,COUNT		 ;SAVE IT.
	MOVE   3,PIOWD		 ;MOVE PERMANENT IOWD TO AC 3.
	MOVEM  3,TIOWD		 ;SAVE IT.
	INPUT  0,TIOWD		 ;INPUT A BLOCK OF DATA.
	STATZ  0,300000 	 ;CHECK FOR ERROR.
	JRST   .+2		 ;ON ERROR, SKIP.
	JRST   .+3		 ;OK, CONTINUE.
	TTCALL 3,[ASCIZ/
?DEVICE OR DATA ERROR.
/]
	CALLI  0,12		 ;EXIT ON ERROR.
	STATZ  0,020000 	 ;CHECK FOR END-OF-FILE.
	JRST   EOF		 ;AT EOF, JUMP TO FINISH UP.
	MOVE   3,DPOINT 	 ;MOVE DATA POINTER TO FAST MEMORY.
	MOVEM  3,TPTR		 ;MOVE IT TO TEMPORARY POINTER.
	JRSTF  0(13)		 ;RETURN.
	PAGE
GETCHR: ILDB   10,TPTR		 ;LOAD A BYTE FROM INPUT FILE TO AC 10.
	SOSG   COUNT		 ;NEED MORE DATA?
	JSP    13,BLOKIN	 ;IF SO, GET ANOTHER BLOCK.
	JRSTF  0(16)		 ;RETURN.
	PAGE
;THE FOLLOWING SET OF SUBROUTINES PROCESS SPECIAL CONDITIONS AND CERTAIN
;CONTROL CHARACTERS.
;
;
;A SUBROUTINE TO TERMINATE A LINE AND EJECT A PAGE
FF:	TLNE   17,777777	 ;IS STACK EMPTY?
	JSP    7,SETUP+4	 ;IF NOT, END OF LINE.
	MOVEI  14,014		 ;MOVE A FORM FEED CHARACTER TO AC 14,
	JSP    13,PUT		 ;AND PUT IT IN OUTPUT LINE.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
;
;A SUBROUTINE TO TERMINATE A LINE AND VERTICAL TAB THE PAGE.
VT:	TLNE   17,777777	 ;IS STACK EMPTY?
	JSP    7,SETUP+4	 ;IF NOT, END OF LINE.
	MOVEI  14,013		 ;MOVE A VERTICAL TAB CHAR TO AC 14,
	JSP    13,PUT		 ;AND PUT IT IN OUTPUT LINE.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
;A SUBROUTINE TO SKIP 1 BRAILLE LINE (3 PRINTER LINES).
SKPLIN: MOVSI  12,-3		 ;3 PRINTER LINES TO BE SKIPPED.
	MOVEI  14,015		 ;PUT A CR IN AC 14.
	JSP    13,PUT		 ;PUT IN OUTPUT LINE.
	MOVEI  14,012		 ;PUT A LF IN AC 14.
	JSP    13,PUT		 ;PUT IN OUTPUT LINE.
	AOBJN  12,SKPLIN+1	 ;3 TIMES.
	JRSTF  0(16)		 ;RETURN.
;
;A SUBROUTINE TO BLANK OUT 1 BRAILLE LINE (3 PRINTER LINES).
BLINE:	MOVE   2,BLANK		 ;MOVE BLANKS TO AC 2.
	MOVEM  2,LINE1		 ;MOVE IT TO FIRST LINE LOCATION.
	MOVEI  2,LINE1+1	 ;PUT ADDRESS OF 2-ND LOCATION IN AC 2.
	HRLI   2,LINE1		 ;PUT ADDRESS OF 1-ST LOCATION IN AC 2.
	BLT    2,LINE3+27	 ;BLANK OUT BRAILLE LINE.
	JRSTF  0(16)		 ;RETURN.
	PAGE
;A SUBROUTINE TO REMOVE CHARACTERS FROM THE STACK AND SET UP THE BRAILLE
;LINE.
SETUP:	TLNE   17,777777	 ;IS STACK EMPTY?
	JRST   .+3		 ;IF NOT, JUMP AHEAD TO CONVERT LINE.
	JSP    16,SKPLIN	 ;IF SO, THEN JUMP TO SKIP BRAILLE LINE.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	HLRZ   3,17		 ;PUT NUMBER OF CHARS IN STACK IN AC 3
	IMULI  3,3		 ;3 COLUMNS IN CELL (ONE BLANK).
	IDIVI  3,5		 ;NUMBER OF WORDS FROM RIGHT END OF LINE
	MOVE   2,LPTR		 ;MOVE LINE POINTER TO AC 2 TO MODIFY IT.
	SUB    2,3		 ;MODIFY THE ADDRESS FOR FIRST CELL.
	MOVEM  2,14		 ;PUT IT BACK WITH NEW ADDRESS.
	MOVEI  2,5		 ;MOVE 5 TO AC 2.
	SUB    2,4		 ;SUBTRACT NUMBER OF BYTES IN WORD (REM)
	IMULI  2,7		 ;MULTIPLY BY 7 GET NUMBER OF BITS.
	MOVEI  5,44		 ;MOVE 44 TO AC 5.
	SUB    5,2		 ;GET CORRECT BYTE POSITION P.
	DPB    5,[POINT 6,14,5]  ;CHANGE BYTE POSITION P IN POINTER.
POPUP:	TLNE   17,777777	 ;IS STACK EMPTY?
	JRST   .+2		 ;IF NOT, SKIP.
	JRST   DONE		 ;IF SO, JUMP TO OUTPUT BRAILLE LINE.
	POP    17,10		 ;POP A CHARACTER INTO AC 10.
	CAIL   10,141		 ;IS IT LOWER CASE?
	SUBI   10,40		 ;IF SO, CONVERT TO UPPER CASE.
	SUBI   10,40		 ;SUBTRACT 40 FOR INDEXING.
	MOVE   12,DOTCOD(10)	 ;MOVE THE CORRECT BRAILLE CODE TO AC 12.
	JSP    16,CELL		 ;JUMP TO SET UP BRAILLE CELL
	JRST   POPUP		 ;GET NEXT CHARACTER FROM STACK.
DONE:	JSP    1,PUTLIN 	 ;WHEN STACK EMPTY, JUMP TO OUTPUT LINE.
	JSP    16,SKPLIN	 ;JUMP TO SKIP 1 BRAILLE LINE.
	JRSTF  0(7)		 ;RETURN
	PAGE
;A SUBROUTINE TO STACK INPUTTED CHARACTERS.
PUSHDN: PUSH   17,10		 ;STACK THE INPUTTED CHARACTER.
	HLRZ   16,17		 ;PUT STACK COUNT IN AC 16.
	CAIE   16,50		 ;IS STACK FULL?
	JRSTF  0(13)		 ;IF NOT, RETURN.
	JSP    7,SETUP+4	 ;IF SO, END OF LINE.
	JRST   INCHAR		 ;GET ANOTHER CHARACTER.
	PAGE
;A SUBROUTINE TO PUT 1 BRAILLE LINE (3 PRINTER LINES) IN THE OUTPUT
;BUFFER.
PUTLIN: MOVE   11,OUTPTR	 ;MOVE OUTPUT POINTER TO FAST MEMORY.
	MOVSI  12,-3		 ;3 LINES IN 1 BRAILLE LINE.
	MOVE   6,LLIMIT 	 ;MOVE NUMBER OF CHARS IN LINE TO AC 6.
	ILDB   14,11		 ;GET A CHAR FROM LINE.
	JSP    13,PUT		 ;JUMP TO PUT IN BUFFER.
	SOJG   6,.-2		 ;DONE WITH A LINE?
	MOVEI  14,015		 ;TERMINATE LINE WITH A CR.
	JSP    13,PUT		 ;PUT IN OUTPUT BUFFER.
	MOVEI  14,012		 ;AND A LF.
	JSP    13,PUT		 ;PUT IN OUTPUT BUFFER.
	AOBJN  12,PUTLIN+2	 ;IF NOT DONE, GET NEXT LINE.
	JSP    16,BLINE 	 ;IF DONE, BLANK BRAILLE LINE.
	JRSTF  0(1)		 ;RETURN
PUT:	SOSG   OBUF+2		 ;IS BUFFER FULL?
	JRST   .+3		 ;IF SO, OR FIRST TIME, CONTINUE.
	IDPB   14,OBUF+1	 ;PUT CHAR IN OUTPUT BUFFER,
	JRSTF  0(13)		 ;AND RETURN.
	OUT    1,		 ;EMPTY BUFFER AND SET UP HEADER.
	JRST   PUT+2		 ;RESTART FILLING BUFFER.
	TTCALL 3,[ASCIZ/
OUTPUT ERROR
/]
	CALLI  0,12		 ;EXIT ON ERROR.
	PAGE
;END-OF-FILE ROUTINE.
EOF:	CLOSE  0,0		 ;CLOSE INPUT CHANNEL,
	CLOSE  1,0		 ;AND OUTPUT CHANNEL.
	TTCALL 11,0		 ;CLEAR TTY INPUT BUFFER.
	TTCALL 3,[ASCIZ/
CONVERSION COMPLETE.
MORE?(Y,N)/]
	TTCALL 4,10		 ;WAIT FOR REPLY.
	TTCALL 11,0		 ;CLEAR TTY INPUT BUFFER.
	CAIN   10,"Y"		 ;MORE CONVERSION?
	JRST   BEGIN		 ;IF SO, JUMP TO BEGIN.
	CALLI  0,12		 ;IF NOT, EXIT.
	PAGE
;THIS BLOCK CONTAINS THE DOT CODE FOR THE BRAILLE CELL FOR EACH ASCII
;CHARACTER.
DOTCOD:  000000000000
	 360000000000		 ;!
	 300000000000		 ;"
	 710000000000		 ;#
	 650000000000		 ;$
	 760000000000		 ;%
	 570000000000		 ;&
	 100000000000		 ;'
	 160000000000		 ;(
	 610000000000		 ;)
	 140000000000		 ;*
	 510000000000		 ;+
	 010000000000		 ;,
	 110000000000		 ;-
	 500000000000		 ;.
	 410000000000		 ;/
	 310000000000		 ;0
	 020000000000		 ;1
	 030000000000		 ;2
	 220000000000		 ;3
	 320000000000		 ;4
	 120000000000		 ;5
	 230000000000		 ;6
	 330000000000		 ;7
	 130000000000		 ;8
	 210000000000		 ;9
	 700000000000		 ;:
	 600000000000		 ;;
	 520000000000		 ;<
	 340000000000		 ;=
	 400000000000		 ;>
	 770000000000		 ;?
	 200000000000		 ;@
	 040000000000		 ;A
	 060000000000		 ;B
	 440000000000		 ;C
	 640000000000		 ;D
	 240000000000		 ;E
	 460000000000		 ;F
	 660000000000		 ;G
	 260000000000		 ;H
	 420000000000		 ;I
	 620000000000		 ;J
	 050000000000		 ;K
	 070000000000		 ;L
	 450000000000		 ;M
	 650000000000		 ;N
	 250000000000		 ;O
	 470000000000		 ;P
	 670000000000		 ;Q
	 270000000000		 ;R
	 430000000000		 ;S
	 630000000000		 ;T
	 150000000000		 ;U
	 170000000000		 ;V
	 720000000000		 ;W
	 550000000000		 ;X
	 750000000000		 ;Y
	 350000000000		 ;Z
	 370000000000		 ;[
	 140000000000		 ;|
	 730000000000		 ;]
	 740000000000		 ;^
	 530000000000		 ;_
	 100000000000		 ;'
	 PAGE
;DATA SECTION
;
PIOWD:	IOWD   200,DATBLK	 ;PERMANENT IOWD.
TIOWD:	0			 ;TEMPORARY IOWD.
	0			 ;TERMINATES COMMAND LIST.
LINE1:	BLOCK  30		 ;FIRST LINE OF BRAILLE LINE.
LINE2:	BLOCK  30		 ;SECOND LINE OF BRAILLE LINE.
LINE3:	BLOCK  30		 ;THIRD LINE OF BRAILLE LINE.
DATBLK: BLOCK  200		 ;HOLDS A DATA BLOCK FROM DISK
DPOINT: POINT  7,DATBLK 	 ;BYTE POINTER TO INPUT ASCII CHARS.
EXTPTR: POINT  6,LOKBLK+1	 ;BYTE POINTER TO STORE EXTENSION.
FILPTR: POINT  6,0		 ;BYTE POINTER TO STORE FILENAME.
OUTPTR: POINT  7,LINE1		 ;BYTE POINTER TO GET CHARS FOR OUTPUT.
LPTR:	POINT  7,LINE1+27	 ;BYTE POINTER FOR BRAILLE LINE.
TPTR:	0			 ;TEMPORARY BYTE POINTER.
STACK:	BLOCK  50		 ;STACK FOR STORING INPUT CHARACTERS.
TYPFLE: 0			 ;FILE TYPE FLAG.
LOKBLK: BLOCK  4		 ;FILE LOOKUP BLOCK.
OBUF:	BLOCK  3		 ;OUTPUT FILE BUFFER RING HEADER BLOCK.
COUNT:	0			 ;HOLDS BYTE COUNT.
SAVE:	0			 ;SAVE WORD.
LLIMIT: 170			 ;120 (DECIMAL) CHARS IN 1 LINE.
BLANK:	ASCII  /     /		 ;FULLWORD OF BLANKS.
	END    BEGIN