home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
pocketbk
/
utilsu
/
vr3a100
/
vr3a
/
vr3a.opl
< prev
next >
Wrap
Text File
|
1994-01-09
|
20KB
|
844 lines
REM VR3a - A Vertical Text Reader for the Psion S3a
REM Version 1.00, January 1994
REM Copyright (C) 1994 Robert Boucher
REM
REM This program is free software; you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by
REM the Free Software Foundation; either version 2 of the License, or
REM (at your option) any later version.
REM
REM This program is distributed in the hope that it will be useful,
REM but WITHOUT ANY WARRANTY; without even the implied warranty of
REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
REM GNU General Public License for more details.
REM
REM You should have received a copy of the GNU General Public License
REM along with this program; if not, write to the Free Software
REM Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
REM
REM Author: Robert Boucher <boucher@asimov.ocunix.on.ca>
REM <boucher@sofkin.ca>
REM
REM Bugs and Suggestions should be addressed to the author.
APP VR3A
TYPE $9004
PATH "\TXT"
EXT "TXT"
ICON "\OPD\VR3A.PIC"
ENDA
PROC MAIN:
GLOBAL xpos%, ypos% rem vLIB
GLOBAL fwidth%(8), fheight%(8), fname$(8,8), maxfont%, spwidth%, fontlst$(255) rem vLIB
GLOBAL fontno%, fontid%, vwidth%, vrows%, statfon% rem vLIB
GLOBAL maxpag%, pageoff&(500), curpag%, bkmark%(10), fontvpg% rem VPG file info
LOCAL handle%, offset& REM its handle and offset
GLOBAL filenam$(128), opafile$(128) REM filename from "O" GETCMD$
LOCAL prevnam$(128)
LOCAL newpag%
LOCAL ret%, pageno&
LOCAL key%, doscan%
vINIT: rem Initialize vertical text library
CLRvpg: rem Clear VerticalPage variables
newpag%=0 rem Do not draw the page
doscan%=0 rem Do not scan the keyboard
IF CMD$(3)="O"
opafile$=CMD$(2)
key%=512+%N rem OPA "O" Command
ELSEIF CMD$(3)="C"
STOP
ELSE
key%=512+%o rem OPEN TEXT FILE
ENDIF
GIPRINT "VR3a v1.00 ¸1994 Robert Boucher"
PAUSE -40 :KEY
CACHE $3000,$3000
WHILE 1
IF newpag%
gCLS
STATUS:
gUPDATE OFF
BUSY "Showing page "+GEN$(curpag%, 5),2
LOCK ON
offset&=SHOWPG&:(handle%, pageoff&(curpag%))
LOCK OFF
CACHETIDY
BUSY OFF
IF offset&=-1
maxpag%=curpag%
ELSE
pageoff&(curpag%+1)=offset&
ENDIF
gUPDATE
BEEP 5,300
newpag%=0
ENDIF
IF doscan%
DO
key%=GETK%:
UNTIL key%<>0
ELSE
doscan%=1
ENDIF
IF key%=512+%n OR key%=13 OR key%=256 rem NEXT PAGE
IF curpag%=maxpag%
GIPRINT "On the last page",0
ELSE
curpag%=curpag%+1
newpag%=1
ENDIF
ELSEIF key%=512+%p OR key%=257 OR key%=8 rem PREV PAGE
IF curpag%=1
GIPRINT "On the first page",0
ELSE
curpag%=curpag%-1
newpag%=1
ENDIF
ELSEIF key%=512+ASC("-") OR key%=ASC("-") rem FIRST PAGE
IF curpag%=1
GIPRINT "On the first page",0
ELSE
curpag%=1
newpag%=1
ENDIF
ELSEIF key%=512+ASC("+") OR key%=ASC("+") rem LAST PAGE
IF maxpag%
IF curpag%=maxpag%
GIPRINT "On the last page",0
ELSE
curpag%=maxpag%
newpag%=1
ENDIF
ELSE
curpag%=curpag%+1
newpag%=1
ENDIF
ELSEIF key%=512+%j OR key%=ASC("/") rem JUMP TO PAGE
pageno&=curpag%
LOCK ON
DO
dINIT "Jump to page"
IF maxpag%
dLONG pageno&, "Page:", &1, maxpag%
ELSE
dLONG pageno&, "Page:", &1, curpag%+1
ENDIF
dBUTTONS "Cancel", 27, "OK", 13
ret%=DIALOG
UNTIL pageno&<>0
LOCK OFF
IF ret%
curpag%=pageno&
newpag%=1
ENDIF
ELSEIF key%=512+ASC("/") rem FULL RESCAN
RESCAN:(handle%, fontno%, 1, &0)
WRIVPG:(filenam$)
READVPG:(filenam$)
vFONT:(fontvpg%)
STATUS:
BEEP 5,300
dINIT "Rescan Completed"
dBUTTONS "Continue", 13
DIALOG
ELSEIF key%=512+%k rem SCAN TO END
RESCAN:(handle%, fontno%, curpag%, offset&)
WRIVPG:(filenam$)
READVPG:(filenam$)
vFONT:(fontvpg%)
STATUS:
BEEP 5,300
dINIT "Scan to End Completed"
dBUTTONS "Continue", 13
DIALOG
ELSEIF key%=512+%f OR key%=ASC("*") rem SELECT FONT
newpag%=SELFON%:
ELSEIF key%=512+%z OR key%=ASC(".") rem ZOOM IN
fontvpg%=fontvpg%+1
IF fontvpg%>maxfont%
fontvpg%=1
ENDIF
vFONT:(fontvpg%)
newpag%=1
ELSEIF key%=512+%Z OR key%=ASC(",") rem ZOOM OUT
fontvpg%=fontvpg%-1
IF fontvpg%<1
fontvpg%=maxfont%
ENDIF
vFONT:(fontvpg%)
newpag%=1
ELSEIF key%=512+%r rem DROP BOOKMARK
DROPBMK:
ELSEIF key%=512+%g rem GOTO BOOKMARK
ret%=curpag%
JMPBMK:
IF curpag%<>ret%
newpag%=1
ENDIF
ELSEIF key%=512+%N rem OPA "O" COMMAND
IF maxpag%
WRIVPG:(filenam$)
ENDIF
IF handle%>0
ret%=IOCLOSE(handle%)
ENDIF
filenam$=opafile$
SETNAME PARSE$:(opafile$,4)
GIPRINT "Opening "+PARSE$:(filenam$,4)
handle%=OPEN%:(filenam$)
IF handle%=-1
doscan%=0
key%=512+%o
ELSE
vFONT:(fontvpg%)
newpag%=1
ENDIF
ELSEIF key%=512+%o rem OPEN TEXT FILE
IF maxpag%
WRIVPG:(filenam$)
prevnam$=filenam$
ENDIF
IF handle%>0
ret%=IOCLOSE(handle%)
ENDIF
filenam$="\TXT\*.*"
LOCK ON
DO
dINIT "Select a text file to read"
dFILE filenam$,"Filename:",0
dBUTTONS "Quit VR", 27, "OK", 13
ret%=DIALOG
UNTIL filenam$ <> ""
LOCK OFF
IF ret%=0 rem ESC was pressed
doscan%=0
key%=27
ELSE
GIPRINT "Opening "+PARSE$:(filenam$,4)
handle%=OPEN%:(filenam$)
IF handle%=-1
newpag%=0
doscan%=0
key%=512+%o
ELSE
vFONT:(fontvpg%)
newpag%=1
ENDIF
ENDIF
ELSEIF key%=27 rem QUIT
dINIT "Really Quit?"
dBUTTONS "No", 27, "Yes", 13
ret%=DIALOG
IF ret%
ret%=IOCLOSE(handle%)
STOP
ENDIF
ELSEIF key%=512+%x rem EXIT
IF maxpag%
WRIVPG:(filenam$)
ENDIF
ret%=IOCLOSE(handle%)
STOP
ELSEIF key%=512+%v OR key%=291 rem ABOUT VR
ABOUT:
ELSEIF key%=290 rem MENU
mINIT
mCARD "File", "Open new text", %o REM , "Delete text", %d
mCARD "Page", "Jump to page", %j, "Next page", %n ,"Prev page", %p,"First page", ASC("-"), "Last page", ASC("+")
mCARD "BookMark", "Drop Bmk", %r, "Goto Bmk", %g
mCARD "Rescan", "Full rescan", ASC("/"), "Scan to end", %k
mCARD "Special", "Select font", %f,"Zoom in", %z, "Zoom out", %Z, "About VR", %v, "Exit", %x
key%=512+MENU
doscan%=0
ENDIF
ENDWH
ENDP rem MAIN:
REM **********************************
REM * Vertical Reader Routines
REM **********************************
PROC ABOUT:
dINIT "VR3A"
dTEXT "","Vertical Text Reader",2
dTEXT "","for the Series 3a",2
dTEXT "","Version 1.00, January 1994",2
dTEXT "","Copyright ¸1994 Robert Boucher",2
dTEXT "","boucher@asimov.ocunix.on.ca",2
dBUTTONS "OK", 13
DIALOG
ENDP rem ABOUT:
PROC OPEN%:(filenam$)
LOCAL ret%, i%, handle%
LOCAL filevpg$(128)
ret%=IOOPEN(handle%, filenam$, $0200)
IF ret%<0
ALERT("Error Opening "+filenam$,"Error: "+ERR$(ret%))
RETURN -1
ENDIF
filevpg$=PARSE$:(filenam$,7)+".VPG"
IF EXIST(filevpg$)
READVPG:(filenam$)
ELSE
fontvpg%=6
maxpag%=0
curpag%=1
pageoff&(1)=0
i%=1
WHILE i%<=10
bkmark%(i%)=1
i%=i%+1
ENDWH
ENDIF
RETURN handle%
ENDP rem OPEN%:
PROC SELFON%:
LOCAL ret%, redraw%, showfon%
LOCAL oldsp%, font&
oldsp%=spwidth%
redraw%=0
showfon%=0
LOCK ON
DO
dINIT "Select Font"
dLONG font&, "Font:", &1, maxfont%
dBUTTONS "Cancel", 27, "Show", 32, "OK", 13
ret%=DIALOG
IF ret%=0
RETURN redraw%
ELSEIF ret%=32
IF showfon%
GET
ELSE
SHOWFON:
showfon%=1
redraw%=1
ENDIF
ENDIF
U