home *** CD-ROM | disk | FTP | other *** search
- PROC main(ARG)
- DEF parhandle:LONG
- LOCAL filehandle:LONG, buffer:LONG, bytesread:LONG, counter:INT, cc:CHAR
- LOCAL c:LONG
- ' parhandle is needed in 'umlaut' so I define it as global
- IF argl=1
- 'then no argument has been passed => give description
- WRITE '\e[41m\e[30mPrintDoc V1.0\e[0m written in 1992 by Maik Schulz\n'
- WRITE 'Usage: PrintDoc <ASCII-file>\n\n'
- ELSE
- 'null-terminate <argument> to use it as filename
- MCHAR argadr+argl-1,0
- 'open <argument> as readfile
- filehandle := Open(argadr,1005)
- IF filehandle?0
- 'open PAR: as output with 'a' 'as a dummy-filename
- parhandle := Open('PAR:a',1006)
- IF parhandle?0
- buffer := AllocMem(1024,$10001)
- IF buffer?0
- VOID Write(parhandle,{setusa},3)
- REPEAT
- bytesread := Read(filehandle,buffer,1024)
- FOR counter,1,bytesread
- c := buffer+counter-1
- cc := MCHAR(c)
- IF cc="ä"
- MCHAR c,"{"
- VOID umlaut(c)
- ELSEIF cc="ö"
- MCHAR c,"|"
- VOID umlaut(c)
- ELSEIF cc="ü"
- MCHAR c,"}"
- VOID umlaut(c)
- ELSEIF cc="ß"
- MCHAR c,"~"
- VOID umlaut(c)
- ELSEIF cc="Ä"
- MCHAR c,"["
- VOID umlaut(c)
- ELSEIF cc="Ö"
- MCHAR c,"\"
- VOID umlaut(c)
- ELSEIF cc="Ü"
- MCHAR c,"]"
- VOID umlaut(c)
- ELSE
- ' no umlaut
- VOID Write(parhandle,c,1)
- ENDIF
- ENDFOR
- UNTIL bytesread<1024
- VOID FreeMem(buffer,1024)
- ELSE
- WRITE 'Couldn\at allocate mem for buffer\n'
- ENDIF
- VOID Close(parhandle)
- ELSE
- WRITE 'Couldn\at open "PAR:"\n'
- ENDIF
- VOID Close(filehandle)
- ELSE
- WRITE 'Couldn\at open "\s"\n',argadr
- ENDIF
- ENDIF
- 'printer-commands for setting usa or german keymap
- STRUCT setusa
- CHAR 27,82,0
- ENDSTRUCT
- STRUCT setgerman
- CHAR 27,82,2
- ENDSTRUCT
- ENDPROC
-
- PROC umlaut(umlaut)
- LOCAL umlaut:LONG
- VOID Write(parhandle,{setgerman},3)
- VOID Write(parhandle,umlaut,1)
- VOID Write(parhandle,{setusa},3)
- ENDPROC
-
-