home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 4
/
DATAFILE_PDCD4.iso
/
utilities
/
utilsp
/
printlbls
/
!PrintLbls
/
!RunImage
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS
UTF-8
Wrap
RISC OS BBC BASIC V Source
|
1994-02-23
|
29.7 KB
|
1,294 lines
><PrintLbls$Dir>.!RunImage
!PrintLbls:
Steven Haslam 1991-4
Interface module:
Simon Huntingdon 1990
Sliding heap manager:
Steven Haslam 1992
TASK 4:$TASK="TASK"
"Wimp_Initialise",200,!TASK,"Label printer"
version%,thistask%
version%<200
0,"WindowManager 2.00 required"
"Wimp_ClaimInterface",thistask%
wimpy_error(
block% &400
init_vars
setup_heap
load_setup
i_size%=&1000
indirection% i_size%
i_ptr%=indirection%
i_end%=indirection%+i_size%
menublocksize%=&200
menublock% menublocksize%
"OS_File",5,"<PrintLbls$Dir>.Sprites"
,,,,splen%
create_named_sliding_block(spritesanchor%,splen%+4)
!#privatesprites%=!spritesanchor%
!privatesprites%=splen%+4
"OS_File",255,"<PrintLbls$Dir>.Sprites",privatesprites%+4
load_windows
mi_ptr%=i_ptr%
create_menus
create_iconbar
quit%=
erwok%=
wimpy_error(
"OS_ReadMonotonicTime"
oldtime%
auto_revise%
"OS_ReadMonotonicTime"
newtime%
(newtime%-oldtime%)>0
oldtime%+=100
"Wimp_PollIdle",,block%,oldtime%
Reason%
"Wimp_Poll",1,block%
Reason%
"Wimp_PollPointer",Reason%,,thistask%
Reason%
0 :
gstrans("<Font$Path>")<>oldfontpath$
create_menus
1 :
redraww(!block%)
2 :
"Wimp_OpenWindow",,block%
3 :
close_window(!block%)
6 :
mouse(block%!0,block%!4,block%!8,block%!12,block%!16)
8 :
keypress(block%!0,block%!4,block%!20,block%!24)
9 :
menu_choice
17,18 :
message_received
19 :
no_acknowledge
quit%
shut_down
shut_down
"Wimp_CloseTemplate"
lose_fonts
"Wimp_ReleaseInterface",thistask%
"Wimp_CloseDown"
message_received
fromtask%=block%!4
my_ref%=block%!8
your_ref%=block%!12
message%=block%!16
("Set Message$Type "+
~message%)
message%
0: quit%=
Message_DataSave
(block%!40=&FFF
block%!40=&DFE)
((block%!20=window%(mainW%,1)
block%!24=3)
(block%!20=-2
block%!24=iconbarI%))
bar_drag%=block%!20=-2
block%!36=-1
block%!0=256
["$(block%+44)="<Wimp$Scrap>"+
block%!12=my_ref%
block%!16=2
i%=0
256
block%!(i%+512)=block%!i%
inputfile$="
None
block%!36=-1
RAMb%=256
RAMb%=block%!36
transfers%=0
block%!36=RAMb%
filesize%=0
!fileanchor%
scrap_sliding_block(fileanchor%)
create_named_sliding_block(fileanchor%,block%!36)
block%!16=6
block%!20=!fileanchor%
block%!24=block%!36
"Wimp_SendMessage",18,block%,fromtask%
Message_DataLoad
(block%!40=&FFF
block%!40=&DFE)
((block%!20=window%(mainW%,1)
block%!24=3)
(block%!20=-2
block%!24=iconbarI%))
bar_drag%=block%!20=-2
loadCSV(
getstr(block%+44))
block%!0=256
block%!12=my_ref%
block%!16=4
"Wimp_SendMessage",17,block%,fromtask%
apptrans%
("Remove "+
getstr(block%+44)):apptrans%=
Message_RAMTransmit
RAMTransmit
&400C0:
Message_MenuWarning
block%!20<=windows%
W%=block%!20
window%(W%,1)=-1
"Wimp_CreateWindow",,window%(W%,2)
window%(W%,1)
block%!20=window%(W%,1)
"Wimp_CreateSubMenu",,block%!20,block%!24,block%!28
&400C7:
Message_TaskNameIs
.inputfile$="Data from "+
getstr(block%+28)
bar_drag%
ask_if_print
icontextaddr(window%(mainW%,1),2)=inputfile$
inputfile$>=18
rj(window%(mainW%,1),2)
&80147:
printer changed
window%(mainW%,1)>0
pdriver
mainH%=window%(mainW%,1)
icontextaddr(mainH%,13)=pdriver$:
redrawicon(mainH%,13)
icontextaddr(mainH%,14)=pres$ :
redrawicon(mainH%,14)
lighticon(mainH%,9,pdriver%)
wimpy_error(code%,mess$,canquit%)
what%,result%
"Hourglass_Smash"
code%>1
mess$+="; code: "+
code%
what%=1
mess$,11)="Fatal error":what%=2
canquit%:mess$+="; (Cancel to quit, OK to continue)":what%+=2
!block%=code%
$(block%+4)=mess$+
"Wimp_ReportError",block%,what%,"Label printer"
,result%
result%=2
shut_down
create_iconbar
block%!0=-1
block%!4=0
block%!8=0
block%!12=68
block%!16=68
block%!20=&3002
$(block%+24)="!PrintLbls"
"Wimp_CreateIcon",,block%
iconbarI%
- Menu procedures BEGIN
tickr(a%,i1%,i2%,ix%)
i%,ia%
ia%=a%+28+24*i1%
i%=i1%
ix%=i%
!ia%=!ia%
!ia%=!ia%
&FFFFFFFE
ia%+=24
light(a%,i%,c%)
a%=a%+36+24*i%
!a%=!a%
&FFBFFFFF
!a%=!a%
&00400000
tick(a%,i%,c%)
a%=a%+28+24*i%
!a%=!a%
!a%=!a%
&FFFFFFFE
lit(test%)
test%
="|lit1"
="|lit0"
tick(test%)
test%
="|tog1"
="|tog0"
sub(m$,m%)="|sub"+
"000000000000"+
(m%),12)+m$
menuitem(text$)
menuflags%,iconflags%,submenu%,indlen%,valid%
menuptr%+24>menend%
255,"No room for primary menu definitions"
valid%=-1
ii%=
indlen%=-1
submenu%=-1
text$=""
menuflags%=8
iconflags%=&07000021
text$,1)="|"
text$,2,3)
"brk":
menuflags%+=2
text$=
text$,5)
"sub":
submenu%=
text$,5,12))
text$=
text$,17)
"lit":
*iconflags%+=(1<<22)*(1-
text$,5,1)))
text$=
text$,6)
"tog":
menuflags%+=
text$,5,1))
text$=
text$,6)
"wri":
text$,5,2)
"sp":indlen%=255:valid%=-1
menuflags%+=%100
text$=
text$,7)
(text$)>menumax% menumax%=
(text$)
menuptr%!0=menuflags%
menuptr%!4=submenu%
menuptr%!8=iconflags%
(text$)>11 indlen%=
(text$)
indlen%<0
$(menuptr%+12)=text$
(menuptr%!8=(menuptr%!8)
%100000000
menuptr%!12=i_ptr%
menuptr%!16=valid%
menuptr%!20=indlen%
i_ptr%+indlen%+1>i_end%
255,"No room for MENU indirection"
$i_ptr%=text$
i_ptr%+=indlen%+1
menuptr%+=24
setmenstr(menu%,item%,s$)
!$(!(menu%+28+24*item%+12))=s$
menstr(menu%,item%)
getstr(!(menu%+28+24*item%+12))
makemen($block%,menutitle$)
makemen2(block%,menutitle$)
makemen2(mendat%,menutitle$)
menumax%,wasptr%
wasptr%=menuptr%
menumax%=10
menuptr%!20=40
$menuptr%=menutitle$
menuptr%?12=7
menuptr%?13=2
menuptr%?14=7
menuptr%?15=0
maxaddr%=menuptr%+16
menuptr%!24=0
menuptr%+=28
i1%=i%+1
item$=""
i%?mendat%<>
i%?mendat%>=32
item$+=
(i%?mendat%)
# i%+=1
i%?mendat%=
"," i%+=1
menuitem(item$)
i%?mendat%<32
(%menuptr%!-24=(menuptr%!-24)
!maxaddr%=menumax%*16+32
=wasptr%
assemble_menu(dest%,destend%,source%,title$)
a%,b%,junk%
a%=menuptr%
b%=menend%
menuptr%=dest%
menend%=destend%
2#junk%=
makemen2(source%,title$)
menuptr%=a%
menend%=b%
open_menu(m%,x%,y%)
MenuBLK%=m%
MenuX%=x%
MenuY%=y%
"Wimp_CreateMenu",,m%,x%,y%
- Menu procedures
create_menus
"Hourglass_On"
menuptr%=menublock%
C%menend%=menublock%+menublocksize%
i_ptr%=mi_ptr%
fonts
FTIconM%=
makemen(
sub("Info",infoW%)+",Save setup,Quit","PrintLbls"):I_entries%=3
highfontM%=
makemen(
sub("Name",fontM%)+","+
sub("Address",fontM%)+",|brk"+
sub("Last line",fontM%)+",Revise font list,"+
tick(auto_revise%)+"Auto-revise","Fonts setup")
HQunitsM%=
makemen("Inches,Points,Millipoints,Centimetres,Millimetres","Units")
I/units%=
"**|in|pt|mp|cm|mm","|"+units$)/3-1
tickr(unitsM%,0,4,units%)
K^mainM%=
makemen(
sub("Fonts",highfontM%)+",Remove CSV,"+
sub("Units",unitsM%),"PrintLbls")
"Hourglass_Off"
mouse(x%,y%,b%,w%,i%)
b%<>2
b%<8
"Wimp_BorderIcon",,block%
-2:
iconbar_click(x%,y%,b%)
window%(mainW%,1):
main_click(x%,y%,b%,w%,i%)
window%(errorW%,1):
error_click(w%,i%)
window%(setupW%,1):
setup_click(b%,w%,i%)
index(w%,
b%<>2
b%<8
block%!0=x%
block%!4=y%
block%!8=0
block%!12=w%
block%!16=i%
"Wimp_BorderIcon",,block%
iconbar_click(x%,y%,b%)
open_window(mainW%)
open_menu(IconM%,x%-64,96+40*I_entries%)
error_click(w%,i%)
0,0,1280,1024
i%=3
shut_down
close_window(errorW%)
erwok%=
setup_click(b%,w%,i%)
setupH%
setupH%=w%
11:
close_window(setupW%)
12:
write_label_sizes:
save_setup:
close_window(setupW%)
10:
write_label_sizes:
close_window(setupW%)
write_label_sizes
temp%
~$temp%=
icontextaddr(setupH%,4)
temp%=0
wimpy_error(0,"You must have at least 1 label across!",
no_across%=temp%
$temp%=
icontextaddr(setupH%,5)
temp%=0
wimpy_error(0,"You must have at least 1 label down!",
no_down%=temp%
1topmargin=
strtomp($
icontextaddr(setupH%,9))
2leftmargin=
strtomp($
icontextaddr(setupH%,8))
-width=
strtomp($
icontextaddr(setupH%,6))
.height=
strtomp($
icontextaddr(setupH%,7))
4indentation=
strtomp($
icontextaddr(setupH%,14))
menu_choice
adjust%
choice0%=block%!0
choice1%=block%!4
choice2%=block%!8
"Wimp_DecodeMenu",,MenuBLK%,block%,block%+&100,&100
choice$=
getstr(block%+&100)
"Wimp_GetPointerInfo",,block%
adjust%=(block%!8)
MenuBLK%
IconM%:
icon_menu(choice0%)
mainM%:
main_menu(choice$,choice0%,choice1%)
adjust%
open_menu(MenuBLK%,MenuX%,MenuY%)
getstr(p%)
p$=""
?p%>31
p%+=1
icon_menu(choice%)
choice%
2: quit%=
save_setup
load_windows
windows%=4
window%(windows%,2)
window%()=-1
)infoW%=1:mainW%=2:errorW%=3:setupW%=4
"Wimp_OpenTemplate",,"<PrintLbls$Dir>.Templates"
space for window def. = 88 + 32 * no. of icons
proginfoS% 88+32*10
"Wimp_LoadTemplate",,proginfoS%,i_ptr%,i_end%,-1,"progInfo"
,,i_ptr%
window%(infoW%,2)=proginfoS%
mainS% 88+32*20
"Wimp_LoadTemplate",,mainS%,i_ptr%,i_end%,-1,"main"
,,i_ptr%
window%(mainW%,2)=mainS%
mainS%!64=privatesprites%
errorS% 88+32*6
"Wimp_LoadTemplate",,errorS%,i_ptr%,i_end%,-1,"error"
,,i_ptr%
window%(errorW%,2)=errorS%
setupS% 88+32*15
"Wimp_LoadTemplate",,setupS%,i_ptr%,i_end%,-1,"setuplabels"
,,i_ptr%
window%(setupW%,2)=setupS%
setupS%!64=privatesprites%
"Wimp_CloseTemplate"
close_window(index%)
loop%,handle%
index%<=windows%
window%(index%,1)=-1
handle%=window%(index%,1)
handle%=index%
!block%=handle%
"Wimp_CloseWindow",,block%
loop%=1
windows%
window%(loop%,1)=handle%
window_delete(loop%)
!block%=handle%
"Wimp_DeleteWindow",,block%
window%(loop%,1)=-1
loop%=windows%
index%=mainW%
close_window(setupW%)
open_window(index%)
handle%
index%<=windows%
window%(index%,1)=-1
"Wimp_CreateWindow",,window%(index%,2)
window%(index%,1)
window_create(index%)
handle%=window%(index%,1)
handle%=index%
!block%=handle%
"Wimp_GetWindowState",,block%
block%!28=-1
"Wimp_OpenWindow",,block%
redraww(handle%)
index%
index%=
index(handle%,
!block%=handle%
"Wimp_RedrawWindow",,block%
more%
more%
"Wimp_BorderWindow",,block%
index%
"Wimp_GetRectangle",,block%
more%
index(handle%,error%)
index%,loop%
index%=0
loop%=1
windows%
window%(loop%,1)=handle%
index%=loop%
loop%=windows%
index%=0
error%
255,"Window index not found"
=index%
window_create(index%)
f%,handle%
handle%=window%(index%,1)
index%
mainW%:
f%=1
get_font(f%)
icontextaddr(handle%,2)=inputfile$
inputfile$="
None
inputfile$<18
centre(handle%,2)
rj(handle%,2)
pdriver
icontextaddr(handle%,13)=pdriver$
icontextaddr(handle%,14)=pres$
icontextaddr(handle%,17)=
namesize%+"pt"
icontextaddr(handle%,18)=
addrsize%+"pt"
lighticon(handle%,9,pdriver%)
update_fontcontrols
setupW%:
icontextaddr(handle%,9)=
display(topmargin)
icontextaddr(handle%,8)=
display(leftmargin)
icontextaddr(handle%,6)=
display(width)
icontextaddr(handle%,7)=
display(height)
icontextaddr(handle%,14)=
display(indentation)
icontextaddr(handle%,4)=
(no_across%)
icontextaddr(handle%,5)=
(no_down%)
window_delete(index%)
index%
mainW%:
lose_fonts
init_vars
cmtoin=(1/2.540005)
inputfile$="
None
erwok%=
font$(3),font%(3,1)
maxaddrs%=100
addr$(maxaddrs%,10),last%(maxaddrs%)
apptrans%=
namesize%=24
addrsize%=12
transform% 16,rectangle% 16,plotpos% 8,labelrect% 16
icontextaddr(wi%,ic%)
q%=block%+&100
q%!0=wi%:q%!4=ic%
"Wimp_GetIconState",,q%
=q%!28
loadCSV(fname$)
"Hourglass_On"
inputfile$<>"
None
scrap_sliding_block(fileanchor%)
"OS_File",5,fname$
,,,,CSVlength%
create_named_sliding_block(fileanchor%,CSVlength%)
"OS_File",255,fname$,!fileanchor%
inputfile$=fname$
window%(mainW%,1)>0
icontextaddr(window%(mainW%,1),2)=inputfile$
inputfile$>=18
rj(window%(mainW%,1),2)
bar_drag%
ask_if_print
checknewfile(CSVlength%)
"Hourglass_Off"
setup_heap
initheaps(1024,8)
O,spritesanchor%=
create_anchor("Sprites")
P+fileanchor%=
create_anchor("File data")
Q/fontmenuanchor%=
create_anchor("Font menu")
R+tempanchor%=
create_anchor("Temporary")
redrawicon(w%,i%)
q%=block%+&100
!q%=w%
q%!4=i%
q%!8=0
q%!12=0
"Wimp_SetIconState",,q%
main_click(x%,y%,b%,w%,i%)
open_menu(mainM%,x%-64,y%)
wimpy_error(0,"Drag a CSV file, type Text (&FFF) or CSV (&DFE), onto this icon to load it.",
inputfile$="
None
wimpy_error(0,"You must have loaded in a file in order to print it!",
print
create_menus
open_window(setupW%)
fonts
header$,blocksize%,heapblocksize%,heapblockinc%,count%,options%,lastfont$
"Hourglass_On"
!tempanchor%<>0
scrap_sliding_block(tempanchor%)
!fontmenuanchor%<>0
scrap_sliding_block(fontmenuanchor%)
lose_fonts
y"header$="|brk|lit0System font"
blocksize%=
header$
heapblocksize%=&400
heapblockinc%=&100
create_named_sliding_block(tempanchor%,heapblocksize%)
$!tempanchor%=header$
count%=0
fonts%=0
options%=1
lastfont$="No fonts"
"Hourglass_LEDs",count%
"Font_ListFonts",,block%,count%
,,count%
count%<>-1
lastfont$=$block%
fonts%=count%
options%+=1
blocksize%+
$block%+2>heapblocksize%
!heapblocksize%+=heapblockinc%
heapblockinc%+=&100
extend_named_sliding_block(tempanchor%,heapblocksize%)
*$(!tempanchor%+blocksize%)=","+$block%
blocksize%+=
$block%+1
f%=1
font$(f%)=$block%
font%(f%,0)=1
count%=-1
lastfont$="No fonts"
wimpy_error(0,"Fatal error: No fonts",
create_named_sliding_block(fontmenuanchor%,28+options%*24)
assemble_menu(!fontmenuanchor%,!fontmenuanchor%+28+options%*24,!tempanchor%,"Font list")
scrap_sliding_block(tempanchor%)
fontM%=!fontmenuanchor%
f%=1
font%(f%,0)=0
wimpy_error(0,"Font """+font$(f%)+""" not found. It shall be replaced by """+lastfont$+"""",
font$(f%)=lastfont$
font%(f%,0)=0
"Hourglass_LEDs"
window%(mainW%,1)>0
f%=1
get_font(f%)
"Hourglass_Off"
(oldfontpath$=
gstrans("<Font$Path>")
main_menu(choice$,choice0%,choice1%)
dot%,option1$,option2$
dot%=
choice$,".")
option1$=
choice$,dot%-1)
choice$=
choice$,dot%+1)
dot%=
choice$,".")
option2$=
choice$,dot%-1)
choice$=
choice$,dot%+1)
choice0%
font_menu_choice(choice1%,option2$,choice$)
inputfile$<>"
None
scrap_sliding_block(fileanchor%):!fileanchor%=0
inputfile$="
None
icontextaddr(window%(mainW%,1),2)=inputfile$
centre(window%(mainW%,1),2)
choice1%
0:units$="in"
1:units$="pt"
2:units$="mp"
3:units$="cm"
4:units$="mm"
/units%=
"**|in|pt|mp|cm|mm","|"+units$)/3-1
tickr(unitsM%,0,4,units%)
font_menu_choice(choice1%,area$,font$)
choice1%
0,1,2:
area$<>font$
change_font(choice1%+1,font$)
create_menus
4: auto_revise%=
auto_revise%
tick(highfontM%,4,auto_revise%)
change_font(area%,font$)
lose_font(area%)
font$(area%)=font$
get_font(area%)
update_fontcontrols
lose_fonts
x%,y%
x%=1
y%=0
font%(x%,y%)
"Font_LoseFont",font%(x%,y%)
font%(x%,y%)=0
lose_font(f%)
y%=0
font%(f%,y%)
"Font_LoseFont",font%(f%,y%)
font%(f%,y%)=0
get_font(f%)
"Font_FindFont",,font$(f%),12*16,12*16
font%(f%,0)
save_setup
setup%
%setup%=
("<PrintLbls$Dir>.Setup")
f%=1
#setup%,font$(f%)
#setup%,
namesize%
#setup%,
addrsize%
#setup%,
topmargin
#setup%,
leftmargin
#setup%,
width
#setup%,
height
#setup%,
indentation
#setup%,
no_across%
#setup%,
no_down%
#setup%,units$
auto_revise%
#setup%,"Y"
#setup%,"N"
#setup%
load_setup
setup%
%setup%=
("<PrintLbls$Dir>.Setup")
f%=1
font$(f%)=
#setup%
namesize%=
#setup%)
addrsize%=
#setup%)
topmargin=
#setup%)
leftmargin=
#setup%)
width=
#setup%)
height=
#setup%)
indentation=
#setup%)
no_across%=
#setup%)
no_down%=
#setup%)
units$=
#setup%
auto_revise%=
#setup%="Y"
#setup%
update_fontcontrols
handle%,f%
handle%=window%(mainW%,1)
f%=1
icontextaddr(handle%,f%+5)=font$(f%)
!block%=handle%
block%!4=f%+5
(%block%!8=(1<<6)+(font%(f%,0)<<24)
block%!12=(1<<6)+(255<<24)
"Wimp_SetIconState",,block%
memfile(
pointer%)
getstr(pointer%)
pointer%+=
- Business part BEGINS
print
"Hourglass_On"
fileptr%=!fileanchor%
filebase%=!fileanchor%
:"strsppage%=no_across%*no_down%
addr$()=""
labelN%=0
(fileptr%-filebase%)<=CSVlength%
> line$=
memfile(fileptr%)+","
line$<>","
line%=0
line$>""
line$,1)=""""
quote%=
line$,
34,2)
D nextpart$=
line$,2,quote%-2)
line$=
line$,quote%+2)
comma%=
line$,",")
nextpart$=
line$,comma%-1)
line$=
line$,comma%+1)
K"addr$(labelN%,line%)=nextpart$
line%+=1
last%(labelN%)=line%-1
labelN%+=1
labelN%=strsppage%
print_page
labelN%=0
addr$()=""
labelN%>0
print_page
"Hourglass_Off"
show_addrs
i%=0
labelN%-1
j%=0
last%(i%)
addr$(i%,j%)
printing_error(N%,e$)
"PDriver_AbortJob",file%
#file%
wimpy_error(N%,""""+e$+""" during printing",
print_page
OStm,OSlm,OSwd,OSht
("RMEnsure PDriver Error 255 No PDriver module!")
"PDriver_Info"
,xres%,yres%
"PDriver_PageSize"
,xsize%,ysize%
file%=
("printer:")
printing_error(
"PDriver_SelectJob",file%,inputfile$
OSlm=leftmargin/72000*180
OStm=topmargin/72000*180
OSwd=width/72000*180
OSht=height/72000*180
transform%!00=
fixed16(1)
transform%!04=
fixed16(0)
transform%!08=
fixed16(0)
transform%!12=
fixed16(1)
top=ysize%/72000*180
rectangle%!0=0
rectangle%!4=0
~!rectangle%!8=xsize%/72000*180
rectangle%!12=top
plotpos%!0=0
plotpos%!4=0
"PDriver_GiveRectangle",1,rectangle%,transform%,plotpos%,-256
"PDriver_DrawPage",1,rectangle%
more%,,rect%
more%
xn%=0:yn%=0
x=OSlm:y=top-OStm
l%=0
labelN%
labelrect%!0=x
labelrect%!4=y-OSht
labelrect%!8=x+OSwd
labelrect%!12=y
intersect(rectangle%,labelrect%)
printlabel(l%,x,y)
xn%+=1:x+=OSwd
xn%=no_across%
yn%+=1:xn%=0:x=OSlm:y-=OSht
"PDriver_GetRectangle",,rectangle%
more%,,rect%
"PDriver_EndJob",file%
#file%
printlabel(label%,x%,y%)
loop%,dy%
dy%=namesize%/72*180
y%-=dy%
"Font_FindFont",,font$(1),namesize%*16,namesize%*16
font%(1,1)
"Font_SetFont",font%(1,1)
"ColourTrans_SetFontColours",,-256,0,14
"Font_Paint",,addr$(label%,0),1<<4,x%,y%
"Font_LoseFont",font%(1,1)
x%+=indentation/72000*180
dy%=addrsize%/72*180
y%-=dy%*1.2
loop%=1
last%(label%)
loop%=last%(label%)
"Font_FindFont",,font$(3),addrsize%*16,addrsize%*16
font%(3,1)
font%=font%(3,1)
"Font_FindFont",,font$(2),addrsize%*16,addrsize%*16
font%(2,1)
font%=font%(2,1)
"Font_SetFont",font%
"ColourTrans_SetFontColours",,-256,0,14
"Font_Paint",,addr$(label%,loop%),1<<4,x%,y%
"Font_LoseFont",font%
loop%=last%(label%)
font%(3,1)=0
font%(2,1)=0
x%+=indentation/72000*180
y%-=dy%
fixed16(N)=N*(2^16)
intersect(boxA%,boxB%)
boxA%!0<=boxB%!0
boxA%!8>=boxB%!0
boxA%!0<boxB%!8
boxA%!8>=boxB%!12
boxA%!4<=boxB%!4
boxA%!12>=boxB%!4
boxA%!4<boxB%!12
boxA%!12>=boxB%!12
- Business part ENDS
no_acknowledge
block%!16
apptrans%=
i%=0
block%!i%=block%!(i%+512)
"Wimp_SendMessage",18,block%,block%!4
apptrans%=
&400C6:
inputfile$="RAM Transfer"
icontextaddr(window%(mainW%,1),2)=inputfile$
centre(window%(mainW%,1),2)
RAMTransmit
filesize%+=block%!24
block%!24=RAMb%
extend_named_sliding_block(fileanchor%,filesize%+RAMb%)
block%!12=my_ref%
block%!16=6
$block%!20=!fileanchor%+filesize%
block%!24=RAMb%
"Wimp_SendMessage",17,block%,fromtask%
block%!0=24
block%!12=0
block%!16=&400C6
block%!20=fromtask%
"Wimp_SendMessage",18,block%
checknewfile(filesize%)
checknewfile(fsize%)
extend_named_sliding_block(fileanchor%,fsize%+1)
file%=!fileanchor%
file%?fsize%=10
file%?(fsize%-1)<>10
fsize%+=1:
checknewfile(fsize%)
CSVlength%=fsize%
pdriver
pdriver%=
xres%,yres%,xres$,yres$
:pdriver$="none installed":pres$="none installed":
"PDriver_Info"
,xres%,yres%,,pdriver$
xres$=
xres%
yres$=
yres%
xres$>
yres$
yres$+=" "
xres$<
yres$
xres$=" "+xres$
pres$=xres$+"
"+yres$
pdriver%=
lighticon(wi%,ic%,co%)
q%=block%+&100
q%!0=wi%
q%!4=ic%
co%
q%!8=0
q%!8=1<<22
q%!12=1<<22
"Wimp_SetIconState",,q%
keypress(w%,i%,s%,k%)
index%,process%
process%=
index%=
index(w%,
index%
mainW%:
main_key(w%,i%,k%)
process%
"Wimp_ProcessKey",k%
main_key(w%,i%,k%)
k%=13
(i%=17
i%=18)
icontextaddr(w%,i%)
s$,2)="pt"
s%>(height/1000)
i%=17
icontextaddr(w%,i%)=
namesize%+"pt"
icontextaddr(w%,i%)=
addrsize%+"pt"
"Wimp_SetCaretPosition",-1
wimpy_error(0,"That value is ridiculous! The label itself isn't that high!",
i%=17
namesize%=s%
addrsize%=s%
icontextaddr(w%,i%)=
s%+"pt"
redrawicon(w%,i%)
i%=35-i%
"Wimp_SetCaretPosition",w%,i%,,,-1,
icontextaddr(w%,i%)
process%=
centre(w%,i%)
q%=block%+&100
q%!0=w%
q%!4=i%
q%!8=(1<<3)
q%!12=(1<<3)+(1<<9)
"Wimp_SetIconState",,q%
rj(w%,i%)
q%=block%+&100
q%!0=w%
q%!4=i%
q%!8=(1<<9)
q%!12=(1<<3)+(1<<9)
"Wimp_SetIconState",,q%
mptomm(mp)
mmtomp=(1/25.40005)*72000
=mp/mmtomp
mmtomp(mm)
mmtomp=(1/25.40005)*72000
=mm*mmtomp
strtomp(str$)
srcunits$,number$
srcunits$=
str$,2)
number$=
str$))
srcunits$
"mp":=
number$
"pt":=
number$*1000
"in":=
number$*72000
"mm":=
mmtomp(
number$)
"cm":=
mmtomp(
number$)*10
strtomp(
str$)+units$)
display(mp)
str$,oldf%
oldf%=@%
units$
"in":@%="+g10.3":str$=
(mp/72000)+"in"
"pt":@%="+g10.9":str$=
(mp/1000)+"pt"
"mp":@%="+g10.9":str$=
mp+"mp"
"mm":@%="+g10.3":str$=
mptomm(mp))+"mm"
"cm":@%="+g10.3":str$=
mptomm(mp)/10)+"cm"
@%=oldf%
j =str$
ask_if_print
pdriver
pdriver%=
confirm("Print this CSV file on "+pdriver$+" printer at "+pres$+"?")=
print
confirm(str$)
!block%=0
$(block%+4)=str$+
"Wimp_ReportError",block%,&13,"!PrintLbls, confirm:"
,result%
=result%=1
gstrans(str$)
"OS_GSTrans",str$,block%,block%+&400
,,end%
block%?end%=13
=$block%
--- SLIDING HEAP 2.00 PROCEDURES
requires SlidingHeap 2.00
module and PROCs
Steven Haslam 1992
_heap_slotsize
"Wimp_SlotSize",-1,-1
_heap_numtostr(d%,n%)=
d%,"0")+
~n%,d%)
_heap_snumtostr(d%,n%)=
d%," ")+
n%,d%)
heapsinfo
"OS_Heap",1,fixedheapbase%
,,bigbloc%,totfree%
"Fixed heap"
"----- ----"
"Heap base : &";
_heap_numtostr(8,fixedheapbase%)
"Heap size : ";
_heap_bytes2(fixedheapsize%)
"Largest free : ";
_heap_bytes2(bigbloc%)
"Total free : ";
_heap_bytes2(totfree%)
"Sliding heap"
"------- ----"
"SlidingHeap_HeapInfo",slidingheapbase%
_heap_pageup(n%)
"OS_ReadMemMapInfo"
=(n%+R0%-1)
(R0%-1)
initheaps(heapsize%,slidingblocks%)
fixedheapsize%=heapsize%
Lheap_trigger%=
_heap_pageup(
+fixedheapsize%+20+20*slidingblocks%-&8000)
setslotsize(heap_trigger%)
_heap_slotsize<heap_trigger%
130,"Unable to initialise heap"
fixedheapbase%=
%slidingheapbase%=
+fixedheapsize%
"OS_Heap",0,fixedheapbase%,,fixedheapsize%
"SlidingHeap_Create",slidingheapbase%,2,slidingblocks%
"SlidingHeap_VerifyHeap",slidingheapbase%
_heap_nextfree
nextfree%
"SlidingHeap_NextFree",slidingheapbase%
nextfree%
=nextfree%
destroyheaps
setslotsize(
-&8000)
_heap_wordup(x%)=(x%+3)
create_anchor(name$)
space%
space% 4+
name$+1
!space%=0
$(space%+4)=name$
=space%
create_named_sliding_block(anchor%,size%)
trysize%
size%=
_heap_wordup(size%)
7trysize%=
_heap_pageup(
_heap_nextfree+size%-&7FF4)
trysize%>heap_trigger%
setslotsize(trysize%)
_heap_slotsize<trysize%
%
setslotsize(heap_trigger%)
F
131,"Not enough room to create block """+$(anchor%+4)+""""
heap_trigger%=trysize%
"SlidingHeap_NewBlock",slidingheapbase%,anchor%,size%,anchor%+4
"SlidingHeap_VerifyHeap",slidingheapbase%
scrap_sliding_block(anchor%)
!anchor%=0
"SlidingHeap_ScrapBlock",slidingheapbase%,anchor%
1trysize%=
_heap_pageup(
_heap_nextfree-&7FFC)
trysize%<>heap_trigger%
setslotsize(trysize%)
heap_trigger%=trysize%
!anchor%=0
"SlidingHeap_VerifyHeap",slidingheapbase%
setslotsize(newsize%)
"Wimp_SlotSize",newsize%,-1
extend_named_sliding_block(anchor%,newsize%)
!anchor%=0
create_named_sliding_block(anchor%,newsize%):
!anchor%>
_heap_nextfree
129,"Block beyond heap limits"
$newsize%=
_heap_wordup(newsize%)
"SlidingHeap_DescribeBlock",slidingheapbase%,anchor%
,,oldsize%
larger%=newsize%>oldsize%
larger%
H trysize%=
_heap_pageup(
_heap_nextfree+(newsize%-oldsize%)-&7FFC)
trysize%>heap_trigger%
setslotsize(trysize%)
&
_heap_slotsize<trysize%
(
setslotsize(heap_trigger%)
@
132,"Not enough room to extend block #"+
~anchor%
# heap_trigger%=trysize%
"SlidingHeap_ExtendBlock",slidingheapbase%,anchor%,newsize%
1trysize%=
_heap_pageup(
_heap_nextfree-&7FFC)
trysize%<>heap_trigger%
setslotsize(trysize%)
heap_trigger%=trysize%
"SlidingHeap_VerifyHeap",slidingheapbase%
_heap_bytes(b%)
end%
"OS_ConvertFixedFileSize",b%,block%,block%+&100
,end%
?end%=13
=$block%
_heap_bytes2(b%)
end%
"OS_ConvertFileSize",b%,block%,block%+&100
,end%
?end%=13
=$block%
create_fixed_block(size%)
pointer%,flag%
"XOS_Heap",2,fixedheapbase%,,size%
,,pointer%;flag%
flag%
extendfixedheap
"XOS_Heap",2,fixedheapbase%,,size%
,,pointer%;flag%
=pointer%
extendfixedheap
nshb%,extend%,trysize%
"OS_ReadMemMapInfo"
extend%
$trysize%=
_heap_slotsize+extend%
setslotsize(trysize%)
_heap_slotsize<trysize%
255,"No room to extend fixed heap"
"nshb%=slidingheapbase%+extend%
"SlidingHeap_ShiftHeap",slidingheapbase%,nshb%
"OS_Heap",5,fixedheapbase%,,extend%
fixedheapsize%+=extend%
slidingheapbase%=nshb%
"SlidingHeap_VerifyHeap",slidingheapbase%