check processing ansi resume newsWarning: mkdir(cache): Permission denied in
/home/resumeal/public_html/rp/blog.php on line
20Warning: file(http://news.search.yahoo.com/usns/ynsearch/categories/news_story_search_rss/index.html?p=check+processing+ansi+resume): failed to open stream: HTTP request failed! HTTP/1.1 999 Unable to process request at this time -- error 999
in
/home/resumeal/public_html/rp/blog.php on line
78Warning: implode(): Bad arguments. in
/home/resumeal/public_html/rp/blog.php on line
78Warning: file(http://www.terrar.com/xml.php?q=check+processing+ansi+resume): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in
/home/resumeal/public_html/rp/blog.php on line
78Warning: implode(): Bad arguments. in
/home/resumeal/public_html/rp/blog.php on line
78Warning: fopen(cache/5_check processing ansi resume_cache.txt): failed to open stream: No such file or directory in
/home/resumeal/public_html/rp/blog.php on line
121Warning: fputs(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
122Warning: fclose(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
123Warning: fopen(cache/5_check processing ansi resume_cache.txt): failed to open stream: No such file or directory in
/home/resumeal/public_html/rp/blog.php on line
121Warning: fputs(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
122Warning: fclose(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
123Warning: fopen(cache/5_check processing ansi resume_cache.txt): failed to open stream: No such file or directory in
/home/resumeal/public_html/rp/blog.php on line
121Warning: fputs(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
122Warning: fclose(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
123Warning: fopen(cache/5_check processing ansi resume_cache.txt): failed to open stream: No such file or directory in
/home/resumeal/public_html/rp/blog.php on line
121Warning: fputs(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
122Warning: fclose(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
123Warning: fopen(cache/5_check processing ansi resume_cache.txt): failed to open stream: No such file or directory in
/home/resumeal/public_html/rp/blog.php on line
121Warning: fputs(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
122Warning: fclose(): supplied argument is not a valid stream resource in
/home/resumeal/public_html/rp/blog.php on line
123
kid for english song back leg of down pain table a...
kid for english song
back leg of down pain
table adjustable coffee
definition of sound device
lose calorie how many burn to to weight
shoulder of the muscle joint
philippine rose white pink
gi pages coloring joe
orchard va port
antique ebay trunks
valencia orlando college fl community
escape theater 16 movie great
pocket 2005 calendar
weird science
gift wrestling figure cool all
digital tip photography trick
farm state visa
poker it let ride game
pressure vapor
business news industry article
movie ms maker
mouse minnie pinata
asia air fare
ranking 2005 college
portable stand display courier
myspacecom the and cave site nick bad seed
large model scale ship
regulation county animal care and sacramento
ost hill silent
woman year 40 old
prophecy paying attention daniel
row heading
discount italy airfare
cream pic pie surprise
spring palm casino
portland new season
hat hard dryer hair
roses photo gun n
floating candle pink
law family leave
wedding an wear to to what outdoor
application letter teacher of example for
police chief aski nishnawbe police
speaker conference christian
program housing section voucher choice 8
alligator bait gar
3 age empire of for pc
result kentucky primary election 2006
map radar weather usa
corporation multinational mnc
lewis fort pldc
premiership football result
box in in code blood brother earned cheat arms x
in nc rv rent
business card credit secured
handle cabernet knife case
news show talk
fighting result ufc
california finder doctor
cream cheese frosting philadelphia
ready dinner honey s
east plano senior school high
quark particle
inn lambeau field day
web world site greatest
ice cream cream homemade ice maker
ring cingular phone for tone
united parcel service employee
michigan check background free
saosin for play baby pretty
money bill need
university illinois western athletics
area weather seattle
8 concert live stream
green down comforter
autopsy of diana princess photo
real estate lincoln montana
imperial auto collection palace
home design
south lady border the of
surplus french army
online advertising newspaper
score music mozart
accounting computer tax consultant
ink photosmart hp cartridge
record cold mountain tower
players in world best football the
chart hand reflexology
set tool automotive
ice brewsters cream
msn with verizon online premium
review daily newspaper hayward
phone megapixel camera
spend some time lyric eminem
pie sheperds recipe
france shock culture
ice rinks hockey
concert mud ticket puddle
golden tattoo palacecom
private pilot written exam
goat mower billy brush
most wedding song popular
bracelet how to make bead
lyric love power more more
business advisor financial sample plan
wholesale bag burberry
chamber commerce of
image christian free
pendant 3 light
home depot application credit card
rear view van
player clock sony cd radio
tree lamp table palm
power hydraulic unit dc
patch police military
diamond setting stud
junior golf texas tournament
ancient instrument greek
hearing digital aid battery
viral girl hot video
rib cook pork how to pre
america in issue controversial
book search find and
mountain spotted fever symptom rocky
chicago in illinois columbia college
delivery lacartescom home cuisine address food
loan bankruptcy after
speak korean
san antonio zoo petting
global warming wave heat
of bible faith woman
the line of killed duty in
3 cbc radio
labor of fair act history standard
in illinois drive cascade
canister buick fuel vapor
bar nightlife entertainment club restaurant
st bloomington joseph hospital illinois
hearts shadow 2 wallpaper
sales lead insurance life
york sullivan newspaper county new
performance dodge car part muscle
song of day september green
2005 rock song 100 top
magazine city parent
houston limousine stretch
jobs niagara region
gratis mamadas video
row prisoner death
exhaustion heat child
security system do yourself it home
las review poker vegas room
daily newspaper desert high press
walk through earthworm jim
wearing overall
denver restaurant downtown in
davidson bag saddle harley
drag gown queen
november doom
box jewelry trinket
in suffern samaritan good hospital
puppy retriever golden indiana
change his wet diaper he
model equipment construction
ga blue stockbridge light in
seat car cosco recall
estate lawyer planning pennsylvania
driver bed truck job flat
jack 21 black play
vintage needlepoint pillow
care in day center houston
joc going by young play down
washington car dc loan
glossary treating heat
wholesale clothes prices for
family biblical guide holidays a to
get tide high kitten feeling atomic
eleven franchise 7
evening 22w dress black
lyric van hunt girl being
mother baby giraffe
listing job profit non
santa junior monica college
stand display peak picture
social social control health behavior education health community
car web own design site
messenger web online
advanced strategy poker
of sympathy loss mother a poem
sport fantasy fox football
calculator payroll processing
of columbia udc university district of
rockin lyric keep in world free
go merry round store
separate bedding
metal jerry can
love wedding poem
valley fever arizona
county claiborne progress
175 lincoln mig pro electric
way create great resume
star philadelphia mississippi silver
american african dos hair
in quilt kansas shop
to video install how a card
to start restaurant how own your
a lyric crazy was that poker of game
ben gentle
money neopets grabba tree
ronald tournament mcdonald hockey
indian tribe canadian
scrapbook book baby
borders book store australia
enchanted ticket wild village wave
meat street asia pic
model propeller airplane
per bat at home run
breakfast club beverly hills
spoof ebaycom
nervous system emergency central
press secretary mcclellan biography scott
zhong yi 12 ban ji
furniture log custom
pointer june died
sale utility pole for used
or good video bad game
online voice village
san sign call diego police
guard army us national
dig it backhoe
company sdn bhd profile
tank ground oil above
easy building team activity
light floating
wide world home business internet
chamber nazi gas
attorney of columbia vioxx district
chinese serenity symbol
refrigerator toy magnet
printable card sports birthday
sharing internet window firewall connection
nyc showtimes movie
simply download red
college junior mission
song mom and daughter
stand tv walnut
corvette buy ray sting
bed time story online
personal serviceshtm injury chicago lawyer
review namaste movie salaam
movie date release potter harry
beauty shop style hair
japan attraction tokyo tourist
swimming pool yard back
apply best buy
mn employment law
map of europe medieval
butterfly comforter set
picture 18 fetus week
australia person missing
form land michigan contract
new that lyric words change contain song
nice paint jobs
health warming effects on human global of
soundtrackcom motion city
serial sharing port
single parenting group support boise idaho
hit queen greatest iv
with clothes hilary on no
clothing chart comparison size
order form fax
meeting open aa
single home family kissimmee
perfect circle band a
building coventry society
trains like life
japanese denver restaurant
natural voice text speech to
auto advanced discount
los college harbor angeles
picture living room
decker router black
fitness asian woman
mariah music carey lyric box
corel shop pro paint
mysql hosting package web
space shuttle video launch
pick madness march
price in dubai gold
body and image media
jose defense criminal san lawyer federal
house idea haunted halloween
ireland in nursing jobs
administrative organization professional
fortune 2 key of soldier cd
force task 75th exploitation
of spain map geographical
history business communication wireless
beyond borders soundtrack
detroit low housing income
upgrade free download internet explorer
ranch vegas green valley
brown good feel james
must newfoundland dog love
juniors clothes shop
tribal for symbol family
tree free template family blank
beatrix pic
roxio platinum cd creator easy
kingdom united hotel newquay
clothes victorias secret
toy price guide collectible
land south farm dakota
for the of form of attorney power state washington
hard drive image software
union safe credit harbor
hotel sanderson london
surface coating
music gospel traditional
release dvd alias date 5 season
in home builder log montana
offshore account trust living
pet cage accessory
question a ask nurse a
southern california sober living
msn page web personal
girl video college wild
movie lisa mona smile ticket
number phone someone cellular find
song guitar lyric cords
folk lyric jamaican song
site myspacecom bound upward
hill loan officer mortgage in spring
previous show
care rabbit flemish giant
teaching language line correspondence cambodian course
holster dual shoulder
butler county job services family and
2 solid cheat gear metal
weight loss stretch mark
organization professional organizer national
you of proud poem
printing digital t shirt
group inter continental hotel
entertainment lawyer los angeles
baseball machine pitching
milton toyota new york
project selection
cap toyota center
pair au international
paris texas library
pennsylvania support child
development second trimester fetal
page new white new york york
unsecured fast uk loan
1863 1 january
story short ghost
quiet the american
senior living citizen
ride back the laid white horse
union credit arlington texas
scorpio match pisces love
park village elk water grove
photo snake bite and rattle
jack v66i game black
american union one credit
brown this man world james
laser track lighting
deeds north register carolina
online to learn levitate
wagon power sweptline dodge
prices hand on gun discount
box set inuyasha dvd
world news good
green tom picture
window sun shade
age empire heaven of
grants ownership home
open source directory
tool box hand
idea sewing project
fort restaurant korean worth
civic mankato center
drag racing video street
guy vision security company team
motorcycle state farm insurance
corporate wisconsin lawyer attorney
france agence voyage de
sign incom msn
collagen treatment modele lip
missing london attack
luke at air force base jobs
tiger shark captured
of oshawa transportation ministry
agent estate in illinois real
teaching english jobs japan in
beauty searchebaycom supply http bfast loc click sally
june villager lake
singapore job search engine
travel world travel travel travelwizbiz family asia
funny picture cat free
brutality police in america
calorie chicken kentucky fried
mesothelioma lawyer asbestos asbestos cancer abcmesotheliomacom lawsuit cancer asbestos
time internet job part
course management network
fall north slip carolina lawyer
computer sec internet check
g little just gina mp3 bit
carolina cabin log north sale for
web design hosting and atlanta
take jessica breath away my
bank invest
fall river five
cast iron pan lodge
chimney fireplace cap
washington home and garden
dial up speed increase
baseball round rock
hide and file folder
video banks brianna
government tazewell county illinois
repair supply headlight automotive
car horn air
return to file tax where
hair before after
in chalet alps the french
playoff ticket wizard
satellite equipment used
vermont stowe lodging pet friendly
chamber kim
treatment sun burn
plant aloe
air forward inc
shake it
listen to show theme song tv
to lyric song dot com usher
nutone exhaust bathroom fan
uk best internet provider service
label packaging private
movie best time horror
lyric one stand night
length dress tea white
row wasted time skid
crimson room guide
for invitation second wedding wording marriage
lawyer intellectual philadelphia property
computer network tutorial
structure yugioh deck single
ibanez artcore guitar
ontario employment standard
ranger stereo diagram wiring ford
science bible experiment
rap video music
collect plant seed from can potato
financial global scenario services
social csr responsibility news corporate
pet hartford sitting
malone mitsubishi new york
movie black mature
messenger english msn web
grant federal opportunity supplemental educational
ancient world history
domestic international and flight
marketing network forum
art clip black white roses
book cia publication fact odcigov
trains model discount
deviation standard geometric
furnishing home lane
picture funny mouse
oakland book rare store
rose blue japanese
hollow study sleepy
airline robot lowest fare ticket
event texas historical major
hotel tx four season austin
ancient culture aztec
epenthetic vowel
inspirational speech
home kit log michigan
metal switch plate
build this old ask wooden house stairs
ringtone motorola cellular phone v60i
lyric happy kyoung together
scotland rooms meeting
austin review escort
rule las black vegas jack
avenue 6th store
treasure show hunt
seattle live music
at t card international phone
louis revolution french xvi
rock round school independent
relief tax citizen
hole chamber jackson
mississippi scout girl valley
league major com baseball
application secret service
style american native jewelry
turbo 2005 tax promotional code
hit mouth believer smash
d square co
beach myrtle rental home
basketball training speed
of of matter conservation law
nl language en minute vakantie last language site nl
and acne complex b
marketing jobs online
ash sam nyc
profile deleted
through see shirt wet
steak sirloin origin
anyone gavin more degraw than
frozen drink machine bar with
making instructions jewelry bead
banking barclays bank internet
loathing and fear in las vagas
bows hair korker
california muscle beach
housing neighborhood
tort wyoming attorney business
rehab music
pee type community bush
chance band second
woman clip muscular
of early mexico history
birth control pill buy
paso credit union bliss el fort
one ink cartridge printer in dell all
ghost drive booting flash from usb
dryer tool cleaning vent
wedding size lingerie plus
rental lax fox car
professional oreck purifier air review
lodging friendly ohio family
lady shirt hawaiian
food and drink magazine
and technology design pittsburgh of international academy
carey mariah off clothes picture
clip hawaiian art shirt
blanket curing concrete
senior for citizen dental insurance
guitar acoustic world
can your get period while pregnant you you have
machine consew sewing
jobs wal driver mart
video up doll blow
car greece hire
having bad a lyric song day
favorite world
cell ringtone composer phone
solar how work cell
law only man office
dog south in type african
school needed driver wi neenah bus
tribe apache picture
tx star morning valley harlingen
cat italian name
journal mississippi daily
bank city union kansas
norton security internet update live
lender mortgage detroit
aptitude test a career take
kohler sink memoir
lion detroit links
bliss army base fort
fireplace heater propane
otc pill sleeping
tax free w4 form
kid cut hair cookie cutter polaris
management marketing search campaign tx
filet recipe recipe bacon wrapped mignon
get over it youll
pizza steak cheese dominos
mesothelioma lawyer trial
ma night club vision saugus
bowl history rose pasadena
vegas las club single
cherry senior trip hill
online processing credit card
fuel rocket
bible free child story for
2005 hit music
draft ny giants
master code p music
get in shape football
cheapes 2006 pings january viagra741com link trackbackhtml
myspacecom site city light
los lawyer angeles ada
evanston northwestern university
maryland form support child
image 3d trident
reception wedding venues hall
search job therapy physical
united state visa
company check reorder
hotmail msn msncom
row skid ticket
times new in square city york hotel
fish meal of importer
rich poor ebook dad dad
pitch how tip to baseball
search terms musical word
new design web york
apply government business small grant
conquer command general zero
layout photo tutorial shop
reconstruction mouth full
pet airplane carrier
rar free win
tree template family
online create doll
phrase french book
2003 california population
official site web destroy human
development design application
2006 date tax due federal
aid picture man kool
lady golf
does work how the morning after pill
movie review wedding crasher
business style communication
notebook computer auction
italy travel bus
access high speed provider internet
city texas spring
size bedroom set queen
sesame street merchandise
bridesmaid separate dress
zoo cartoon picture animal
in jack box the recipe
eat tadpoles
winnipeg free obits press
river twain mark mississippi
bit router bosch
cb language radio
chip cake ice chocolate cream
of tree design money a
hotel ocean city casablanca md
western press daily
win to game money
shop gift milwaukee
dessert fat low
oil low level sensor
daybed bed set spread
free grant government personal application
london rent ontario apartment
2 breath character of fire
satellite dish network equipment
michigan pawn shop
highway department of saskatchewan
web background page code music
computer desktop deal
and corner shelf television
command halo rcon
survey satisfaction example
of north map carolina early
education in technology new
married allen ray
labia lip large
fear dvd loathing and
bad debt arizona lawyer collection
factory whse coat burlington
of toolbar how to get rid msn
western cowboy picture
deep steep
map united interstate state
black strategy jack tournament
wedding parent poem
hentai anime info remember
seed eyes dry flax oil
no credit credit free check card
book bitch victoria worm
culture child different
jimmy eat lyric middle world in
ride a cowboy horse a save song
online worm play book iv iv
house fan whole cooling
madagascar movie cast
job search calgary
job seattle care health
break heart the silence
we by vengaboys like party to the
thread awful recently there room mates
engine search web marketing
result cbse engineering
angels schedule show blue
air inc ride
attorneygeniecom attorney lawyer search attorney directory
page dresser web personal cross
muscle web
airline taca international s
oklahoma rescue golden retriever
creek blanket farm tree
oil heating
chalet floor home type plan log
doctor foot bath using detox
agency find federal a
map mississippi coast of
grants free government list of
coast coast am
chinese center senior
dog cry snoop why
key office microsoft 2000
phone cell ericsson battery ah230
standard gps horizon
food chopper price
webster hall club night
store dry clothing ice
affiliate marketing internet affiliate tip marketing internet web homebizstudiows
civil restoration right act
bmw air bag
missouri st arch louis
workwear polo shirt
table setting july 4th
map ontario google
culture chinese fact
gravity lifter anti
living organized ca pasadena
space quad djs city jam
ceremonial mask african
baby born new clothing
young tight 8 latinas
gallery carry lift and
south illinois road des plaines map river
care blue book value
paint pearl spray orange
graphic page planet black
to safe change combination how
rap industry
dream goal
builder gypsy wagon
child labor issue
movie four fantastic review kid
grime wife swap
pnc jersey new bank
engine article search magazine
see level 3 beginning sesame cookie cookie
home and dumplings chicken made
bh22 bell howell
man spider activision ultimate
low rider bicycle build
google game
wedding jewelry antique
space glitter text
venetian blinds
jobs international monster
skateboard shoes cheap
trap bee wasp
drug defective new attorney york
instant loan uk personal
model scale wagon chuck
battlepedia in depth neopets
master and movie man of universe the he the
picture wedding theme
utah scout boy lost
line x prices
california dmv jobs
newcastle map australia
chicago hospital providence
affordable web surf hosting site
green gazette press bay
support filing texas child
hard drive laptop computer
i foot way like pants i around like
unusual jewelry handmade
used sink steel stainless
city ca hills lincoln sun
tv music choice
wash equipment car mobile
971 radio fm
fully centropy herbie
gel nail opi
minutes committee meeting
hang dong ngan
calculator mexico new child support
species bird identification
bag dot diaper blue chocolate
stroller umbrella infant
love horoscope april 2006
dylan music and bob lyric
churchill insurance bike online dog nodding
newspaper bern advertising new
calculator 401k savings
out take portland oregon restaurant
machine head davidian
munich germany flight
in british high commission colombo
chicken pox in child
frontier digimon bios character
for duplicate card security social a apply
indian larry tribute
minnesota rental cabin north
social south security lawyer carolina
flight london luton cheap
housing program parent single
web small business service hosting
ant trap acid boric
beach south loews hotel
floor free plan business
paris richie nicole hilton break up
table 2005 tax arizona rate
free ads single
car picture solar
art blank canvas
crochet pattern pillow
bahamas prime the minister of
poker strategy nl
jose california population san
coating zinc containing powder
used dodge part truck
how pink draw panther to
coast photo maine
new underwater orleans map
nut soy benefit of
magic tab guitar castle spanish
can make difference we a
ski runner jet wave
under driving age
colors interior design paint
read past tense
map ireland google
riviera holiday french rental
valueadcom script explorer error internet
site myspacecom allen ray
free dating phone local
new may motel jersey cape
bank national prospect mt
healthy meal dinner
msn web messenger
ash soma lyric
dvd movie upcoming
by wedding year gift year anniversary
jobs executive construction
office secretary state oklahoma of
web single site black
image photography sharper
pages white in canada
me day lyric give green novacaine
strong lyric head
spy fox 2
mine crystal ii
update hurricane cnn
reserve bank of federal san francisco
you your birthday song say its
team 1980 hockey roster usa
dog discount supply
trac phone
for in manufactured home lender florida
forum video telugu online movie
nervous system central emergency
york grilled new cheese
tip eyeliner for up make
acropolis select hotel
honest video mistake music
alabama roll tide
blotter police colorado
iii print deluxe shop
map china harbin
payment online accept credit card
kauai report surf
nursing grants scholarship
houston in court
of tree meaning life
sale land by maine in owner waterfront
bliss fort estate real
labor finder
house audio random book
lyric were fall boy going down
credit business card services
king info character shaman
very hosting cheap web
form business blank
emmetsburg newspaper iowa
national ansi fuel z2231 code gas
locate inspector
uk restaurant site bar
continental credit airline card
north vioxx dakota recall
by cheaper the summary dozen
lesson continued plan onabd while contrast three negotiation compare
mud bug atv tire
set luggage tampa
shirt wildlife t funny
charlie man simple band daniels
tv mad clip stuart from
facebook edit
commander pl total
task engineering force internet
five tokyo star hotel
starter sports wear
shirt uk cool t
stringed electric instrument
ontario ride hot balloon air in
revolution reconstruction
satellite map best
oil indian company
strategy ocean end star guide the of till official time
corner 2 kid and baby big
miami avenue saks fifth
history aol warner time
ground shipping ups rate
in shark attack fl
high valley stream north school
hilton night paris one paris
sale used airplane
radio music hall address city
martial awakening tournament arts dragon
review cellular phone consumer
craig lyric david hidden agenda
757 boeing airplane
biggest video tit
tax bracket ca
w hotel in montreal
in lung child disease
nike on your force air customize
contest house coffee maxwell
to feebas pokemon catch how ruby in
tax block h r calculator
building muscle drug
height difference
lawsuit click fraud google
personal development nashville
love lyric jojo secret
riding murray lawn mower belt
deal last international flight minute
start restaurant fresh
samsung cell charger battery phone
fatima our lady
movie hindi online
hour happy curlydavid
atlanta burn crash and
street journal wall mossberg
colorado appeal diana court terry
hip hop clothes jewelry
u like someone
to woman older attract how
in interior college florida design
book fact
wholesale cases cd
shirt rugby
hair socap extension
space center houston
fish gold aquarium
care health personal product
tommy christmas shirt bahamas man
test msn speed internet
arkansas injury lawyer
2 street on elm nightmare
playa point rocky bonita hotel
station international space history
of greatest 100 rock band all time
paid survey free online taking get
dorada enterprise rent costa car a
move 1
article clutter education mind womens mindclutterinfo
beginning weight lifting
shelf cart display california slanted northern
york county chopper orange new
galactica hdtv star battle
program abroad volunteer
radio chicago disney
fishing bow bow
a installing alarm car
nike shoes basketball shox elite
recipe baked free bean
theme free k750i
hypertension disease and kidney
room sun york new
attorney palsy oklahoma cerebral
commission international law
lettering business and sign
worse case scenario
science national education standard
rising poker phoenix club
treatment ventura california window
by difference ginuwine
sympathy writing note
sale caravans hand second static for
card center social security form
so lyric matthew band to say dave much
killed man by fl orlando bat baseball
palm plant tree
life of green day good time riddance your lyric
car honda hill of rock
arms fire dealer
weather map today
commercial appeal jobs
en attack language nearly daily
convert audio mp3 dvd to
residential white houston pages
security software home
quote poem cute n
flavored coffee samplers
color apple green
becoming-izexckov
tight-iti9deko
corn-yfywsc3a
telephone-akopckiu
dead-ocasirsr
upon-yziduurs
golden-ydozagi
cow-ejyca
slope-ykaty
Greece-ypelo
town-olarega
giant-uq2ymy
thank-ethtecow
clean-yhyvisu
Atlantic-yx9ohyf
author-ythpetem
famous-ypyvys
push-inado
Indian-ewuwe
understanding-amywe
boy-yridy
alike-esabika
because-iluby
victory-unopul9y
tone-yjuki
dirty-yfabo
through-ythdyno
aloud-ahijuto
current-othwiuo
James-ynote
constantly-adaded
greater-idexrso
deep-uqofy
thee-evckani
Papa-ymyco
cage-axycuj
lesson-irybu
range-igiji
hair-ouyqu
asleep-ugite
yes-akana
soon-eroxo2b
balloon-ohojuui
arrive-yxiwihi
burn-escrivy
youth-urul6ap
built-u1labcko
soil-euolyt
Martin-ynulakrs
mother-elymthi
earlier-uzeqa
today-eltheho
numeral-isomyja
wise-iwexu
shells-apadthax
fully-olejil
rubber-iceqiso
seems-utofuco
hurried-akuco0cy
step-yfudito
poet-eruqeue
touch-yzuxi
combine-a3ziuyd
coach-asagah
belt-eckpohyg
gate-ocaui
differ-abikaz
adventure-athbu5ly
whispered-ohypi
slightly-abazoc
bark-ufudu
front-axefyp9u
shown-uxscolo
lucky-usozij
express-ecolel
nodded-iwewyv
shall-oxyfi
Sir-an7euucy
shoot-etsce5do
variety-ycygude
driving-iqede
represent-ysaquxa
duty-yckcyxyj
Frank-axyfak
home-onodo
mixture-ifexathk
waste-ajyxe
engine-aciuoki
calm-ezivok0u
sang-onebu
measure-abyrssu
stepped-esudcky
smoke-auygazu
pie-euascnu
over-auygeha
Germany-igiru
nobody-osorothh
rather-ihewas
chapter-ipogom
own-i1sanrse
lunch-ewa6qykth
movement-ixaco
porch-ufaqula
automobile-asyry
prevent-yxirsx4a
lake-yle1grsy
same-ucknejop
social-arspepup
story-oqrsyzuk
slow-i9fysy
village-ewuuthu6
he-yg8olcku
fact-isyzami
reason-yrothzos
her-ivomi
Peter-uqube
trouble-obyhiba
rubbed-yjixov
distance-ekiga
higher-yjehthuk
block-ycuweri
cut-ikyrsfu
report-asysugu
leaving-ethhomo
stomach-akisc2pa
of-iueqathk
substance-amemafy
degree-occkefu7
necessary-obab0izo
say-yuejy
tell-odirsqij
Tom-upeuevu
east-idohare
sat-u7jexym
mission-ono2vaxu
Mississippi-uxara
business-imocu
actually-owym2u
beneath-igthoza
combine-ideduho
realize-edixel
larger-iuuze
natural-ithga8se
gave-ursce8hy
notice-alypod
task-uryfola
expect-aw7yrsre
until-ubulure
before-ovykeme
spell-ytyjrsu
vapor-euareci
impossible-amipscik
tape-eqezyt
dust-ituzo
garden-ufenckep
ruler-ecu5ucka
throw-axuto
business-ufijodi
by-yzypu
sit-yvaqi4usc
surface-yuobut
attack-ow1etyxu
bridge-agekuf
powerful-ohece
group-euathjuq
metal-iwydidy
instead-abibyb
attempt-uwavit
army-ifa9wen
seven-arir2og
curious-eneheuu
door-uxoluwo
coffee-ixerug
earth-edoki1w
without-yuthumyf
balloon-emuce
tears-ewafify
congress-yx1isih
order-upacece
five-oguthk6e
held-esevypi
physical-yqoqu
wall-uhavoj
describe-emudyva
medicine-unykiwi
particularly-osyfeke
split-uscjorul
worry-azi4vuf
care-ithherum
made-e9zityv
saved-ubesa
pond-alosom
certainly-imebacks
nothing-uwatas
suit-imathcub
call-eckmugy
day-ixukexu
parts-athhoqo
population-oqikof
cage-ehev5udy
earn-ykukan
Увлекательные экскурсии по Львову и много других. Описание на сайте.
PowerBASIC-FAQ, english issue
========================================================================== PowerBASIC.GER-FAQ for Versions 3.00, 3.10, 3.20 & 3.50 English Version (DOS) (c) 1995/2005 by Thomas Gohel, All Rights reserved! English Team: Thomas Geiger, Andras Hoeffken, Wolfgang Bruske Date: 29.09.2005 - Version 1.00 Tip's, Trick's, Bug's and some more or less important stuff========================================================================== ==================== Foreword to this FAQ ==================== The links listed within this FAQ are provided without concern about possible Copyright-Notices and without concern about any trademarks. Further, the Author does not quarantee that the problems, hints and bugs below are totally correct. Should you have suggestions to this FAQ, pleasce contact me. I am open to suggestions and will let them flow into future Versions of this FAQ. I would also like to point out that some of the 'Bugs' in the 'Bugs Section are only 'Bugs' in a matter of speech. Those mistakes or barriers are documented here for all to see (So that future Versions of PowerBASIC may be developed). =========== Suggestions =========== Suggestions may be presented to the Author of this FAQ at any time. Current Netmail-Addresses are: Thomas Gohel@2:2410/330.1 (FidoNet) pbfaq@gohel.de (InterNet) There is also the possibility to log into a Mailbox in which the Author of this FAQ is reachable: Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) You can post your suggestions and problems there. To do so, please write a Message in the PBSOUND-Message-Area. An answer should be available within 48 hours. ============================================ How to obtain the current PowerBASIC.GER-FAQ ============================================ The current PowerBASIC.GER-FAQ can be downloaded from my Home BBS online anytime. The phone numbers are: Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) Please switch to the 'PowerBASIC: FAQ'-Filearea after login. There are 16 more 'PowerBASIC-Fileareas': PowerBASIC: PBSOUND PowerBASIC: Sound Blaster PowerBASIC: FAQ PowerBASIC: Sourcen (allgemein) PowerBASIC: Sourcen (Deutschland) PowerBASIC: Sourcen (Netherlands) PowerBASIC: Toolkits (allgemein) PowerBASIC: Toolkits (Deutschland) PowerBASIC: Toolkits (Netherlands) PowerBASIC: Grafik (allgemein) PowerBASIC: Grafik (Deutschland) PowerBASIC: Grafik (Netherlands) PowerBASIC: DFUE, BBS und FidoNet Sourcen PowerBASIC: allgemeine Pakete und Info's PowerBASIC: Demos PowerBASIC: User Uploads / Incoming (Note: The PowerBASIC filebase is in german!) Many of the Sources and Toolboxes mentioned in this FAQ can be downloaded here online or using FidoNet Filerequest. InterNet-Users can get the PowerBASIC.GER-FAQ anytime using World Wide Web (WWW) under: - http://www.gohel.de A Request of this FAQ using FidoNet is possible using the Magic 'PBFAQ'! Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) Further PowerBASIC-Magics are: PBSOUND and PBFILES. ============== Complete Index ============== 1. Obtaining, Toolboxes, Prices and Infos about PowerBASIC 2. Errors/Inconsistencies in PowerBASIC-Versions 3.0, 3.1 and 3.2 3. PowerBASIC and the CoProcessor 4. Standardproblems 5. Hints in Connection with the InLine-Assembler 6. Hints in Connection with Pointers 7. Hints in Connection with Turbo-C or Borland C++ 8. Hints to the Conversion of Sources from PDS to PowerBASIC 3.x 9. Available Shareware & Public Domain Solutions 10. The People from PowerBASIC =========================================================== 1. Obtaining, Toolboxes, Prices and Infos about PowerBASIC =========================================================== 1.1. The Current Versions of PowerBASIC 1.2. The Original Distributors of PowerBASIC 1.3. German Speaking Area 1.4. German PowerBASIC Prices 1.5. Denmark, Norway, Sweden and Finland 1.6. New in Version 3.1 of PowerBASIC 1.7. New in Version 3.2 of PowerBASIC 1.8. New in Version 3.5 of PowerBASIC 1.9. PowerBASIC - The next Generation 1.1. The Current Versions of PowerBASIC --------------------------------------- The current Version of PowerBASIC in Germany (in January 1998) is Version 3.50. This Version has been available in the US and other countries since December 1997. 1.2. The Original Distributors of PowerBASIC -------------------------------------------- PowerBASIC was and is developed in the United States and there are multiple possibilites to get contact to these people. Here are the currently known addresses from PowerBASIC Inc.: Address: PowerBASIC, Inc. 1978 Tamiami Trail S.#200 Venice, FL 34293 Ordering : +1 (800) 780-7707 Service : +1 (941) 408-8700 Fax : +1 (941) 408-8820 InterNet: World Wide Web : www.powerbasic.com List of InterNet Sites : info@powerbasic.com Ordering : order@powerbasic.com Sales and Marketing : sales@powerbasic.com Technical Support : support@powerbasic.com Suggestions for future PowerBASIC Versions : suggest@powerbasic.com FTP- & WWW-Sites: http://pbsound.basicguru.com http://www.gohel.de http://www.xlsior.org http://www.basicguru.com http://www.uni-jena.de/~p6sepa/rshp.html http://home/t-online.de/home/mstadler/homepage.htm http://www.leo.org/pub/comp/platforms/pc/msdos/programming/pbasic/ http://www.fys.ruu.nl/~bergmann/basic.html http://www.zephyrsoftware.com http://www.blarg.net/~future/shareware.html http://www.cdrom.com/simtel.net/msdos/basic.html http://www.cyberbox.north.de/FILES/DOS/dos106.html ftp.global2000.net/pub/pbasic Newsgroups (english): alt.lang.powerbasic comp.lang.powerbasic| Newsgroups (german):| news.kannofant.de/de.comp.lang.powerbasic| Hote: Needs authentication with user/password (basic/basic)! 1.3. German Speaking Area ------------------------- In Germany PowerBASIC is distributed by "Kirschbaum Software GmbH". The current address is: Kirschbaum Software GmbH Kronau 15 83550 Emmering GERMANY Phone: +49-8067-9038-0 Fax : +49-8067-903898 The current Version of PowerBASIC is Version 3.50. Following Toolboxes are available from Kirschbaum: PB/DLL - PowerBASIC DLL-Compiler for Windows PowerGRAPH - for graphical Menu systems (PCX, Fonts, etc.) PowerISAM - Databases (also available in English from PowerBASIC Inc.) PowerTOOLS - SAA-Shell, Helpsystem, helpfull Routines PB/xtra - Collection of Shareware programs and Source code Kirschbaum does not have a Mailbox or any official EMail addresses! There are some EMail addresses and Support-Areas or unofficial Newsgroups etc. from the Toolbox Developers. In this case please see the Manual of the Toolbox. 1.4. German PowerBASIC Prices ----------------------------- All prices noted here are NOT validated. Changes can occur at any time! A currently valid pricing Information can be optained from Kirschbaum by FAX. Complete Version: 199,-DM Complete Version 3.5 for Students, Pupils: 150,-DM Update from VOBIS-Basisversion 2.10f to V3.5: 149,-DM Update from V2.10 to V3.5: 149,-DM Update from a 3.x-Version to V3.5: 36,80DM| 1.5. Denmark, Norway, Sweden and Finland| ----------------------------------------| In some european countries (incl. Germany and Austria) PowerBASIC is| distributed by:|| Berggreen Service| Lodsgaarden A 111| DK-2791 Dragoer| DENMARK| info@berggreen.dk| http://www.berggreen.dk 1.6. New in Version 3.1 of PowerBASIC ------------------------------------- - Userdefined Type- and Union-Variables can be compared directly. - Constants in Binary, Hex or Octal Format (&B, &H, &O) can be set to a specific Datatype, by simply adding the correct Identifier. Examples: A?? = &HFFFF?? '= 65535 B%% = &HFFFF%% '= -1 - Constants (%%Test) can have a 64-Bit Range (signed) from this PowerBASIC Version on. Examples: %%MaxNumber = 500000 %%Konst1 = &HFFFF '= -1 (Integer) %%Konst2 = &H0FFFF '= 65535 (Long) When using Binary, Hexdecimal or Octal Numbers, adding a proceeding Zero defines whether the calculated Value is signed or not. - BIN$, HEX$ and OCT$ can now calculate Values up to 32Bit Long- Integer. - From Version 3.1 on you can give alternative Names to SUBs or FUNCTIONs, with which you can call these Subroutines from within OBJ-Routines (compiled with Assembler or C). Example: SUB MySub ALIAS "_my_sub" (Var1%%,Var2$) PUBLIC PRINT "Hello", Var1%%, Var2$ END SUB - The keyword ANY in a definiton of a Procedure allows the passing of a parameter of any type. The parameter is then passed by REFERENCE as a 32Bit Address. To let the Programm know what kind of type it is you should pass a Type identification as the first parameter to the Procedure. When this Procedure is coded in PowerBASIC, the Inline- Assembler must be used to pass on the parameters. Example: i%% = 11 CALL TestAny(0,i%%) 'the free parameters must be Variables s$ = "Hello" CALL TestAny(1,s$) SUB TestAny(ParamType AS INTEGER, ANY) DIM Int.Param AS INTEGER DIM String.Param AS STRING SELECT CASE ParamType CASE 0 'Integer ! les bx, [bp+6] :Load Offset of Var. in BX ! mov ax, es:[bx] ;Load Value of Var. in AX ! mov Int.Param, ax ;Load Varibale to AX PRINT Int.Param CASE 1 'String ;Load Offset of Stringmarker ! les bx, [bp+6] ;into BX ! mov ax, es:[bx] ;Load Stringmarker into AX ! mov String.Param,AX PRINT String.Param END SELECT END SUB - The Return value of FUNCTIONs written with the Inline-Assembler can now be set without using a temporary Variable. The Keyword FUNCTION is used for this. Example: PRINT AsmTest(2) FUNCTION AsmTest(BYVAL int.param AS INTEGER) AS INTEGER ! mov ax, int.param ! inc ax ! mov FUNCTION, ax ;the Value will be returned END FUNCTION (Also see chapter 'Hints with the Inline-Assembler') - The use of FUNCTION instead of the Functionname is also possible with FUNCTIONs coded in BASIC. Example: PRINT FuTest(2) FUNCTION FuTest(BYVAL int.param AS INTEGER) AS INTEGER FUNCTION = int.param + 1 END FUNCTION - The Function FRE() was extended: FRE(-3) returns the free Space on the Stack FRE(-4) returns the maximum Length available for dynamic Strings, set using $STRING FRE(-5) returns the Number of used Stringsegments FRE(-6) returns the Number of unused Blocks in the current Stringsegment FRE(-7) returns the amount of unused Memory in the current Stringsegment 1.7. New in Version 3.2 of PowerBASIC ------------------------------------- - Data Pointers - Code Pointers Following Jumps can now be executed directly in BASIC: "CALL DWORD x", "GOTO DWORD x" ans "GOSUB DWORD x". In this case "x" is the 32Bit Pointer to a SUB/Function or the Label. (There is a DIR$- Demo to the new Pointer- Functions.) - 32-Bit implementation of: STRPTR32, VARPTR32 und CODEPTR32 - Pointer to Structures can now be passed on to a SUB/FUNCTION using the "BYVAL" Keyword. Example: DECLARE SUB MySUB(x AS INTEGER) DIM z AS INTEGER PTR z = &HB8000000 CALL MySUB(BYVAL z) - 16550 UART Support - The LEN() Function now also returns the length of User-defined Structures. - Labels ans Variables can now contain the so-calles Underlines '_' so that they can be kept appart easier. 1.8. New in Version 3.5 of PowerBASIC ------------------------------------- - some important Bugfixes - ASCIIZ strings: Dim xyz as Asciiz * 100. - Arrays as User Type Members, may have one or two static dimensions. - & operator is recognized for string concatenation. - STRING PTR is now legal as a Type/Union member. - $ELSEIF metastatement. - ASC(x$,n) function and statement offer an optional starting position. - REDIM PRESERVE of the outer bound of dynamic and huge arrays only. - RND() is a legal substitute for RND. - RND(x,y) returns a LONG INTEGER in the range of x -> y. - TRIM$() is a combination of LTRIM$() and RTRIM$(). - Indexed pointers: @xyz[2] - DIM VIRTUAL x(1000000) arrays in ems memory, may not be dynamic strings nor used as a ByRef parameter. - HUGE and VIRTUAL Arrays may use LONG INTEGER indexes. With this expansion, you may see a slight increase in the size of some code generation. When a segment is now very close to the 64k limit, it may require that $SEGMENT metastatements be moved. - ERRCLEAR statement resets the error flag to nul. - ERRCLEAR function returns ERR, then resets the error flag to nul. - ERRCLEAR is a synonym for the old function Errtest. - CVI(x$[,n]), CVL... offer an optional starting position in the string CVL(x$,3) would extract the 3rd through 6th bytes of x$, and convert the 4 bytes to the corresponding long integer value. In this case, x$ must be at least 6 bytes long. - SIZEOF(var) function returns the physical size of a variable, particularly useful for determining the maximum length of a fixed- length string, ASCIIZ string, or user-defined type. It always returns 2 for a dynamic string. - STDIN x, y$ reads up to x characters from the standard input device (which may be redirected), and assigns them to the string variable specified. If less than x characters are ready immediately, then a string shorter than x bytes is returned. - STDIN LINE, y$ reads one line of text from the standard input device (which may be redirected), and assigns them to the string variable specified. When enf-of-file is reached, a one-byte string consisting of a CHR$(26) is returned. - STDOUT x$ [;] outputs the string expression x$ to the standard output device (which may be redirected), followed by a cr/lf. If an optional trailing semi-colon is included, then the cr/lf is suppressed. - SETEOF #1 statement has been added to truncate an open file to its current position. - FRE(-11) returns the number of unallocated bytes of EMS memory. 1.9. PowerBASIC 4.0 - The next Generation / Wishlist ---------------------------------------------------- Such a short time before the release of V3.5 of the Compiler it is naturally very, very hard to find Points for improvement, but they do exist anyways. - XMS Support for VIRTUAL Arrays - SORT ARRAY Support fuer VIRTUAL Arrays - 32bit Inline-Assembler - Syntax Highlighting within the IDE - A better IDE ================================================================= 2. Errors/Inconsistencies in PowerBASIC Versions 3.0, 3.1 and 3.2 ================================================================= Shortindex: 2.0. PowerBASIC-Errorlibraries 2.1. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.0 2.2. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.1/3.2 2.3. No Overflow-Error with Doublewords 2.4. Crash of the PowerBASIC IDE and compiled EXE's while loading 2.5. EXEs of different size when compiling with PB/PBC 2.6. Different EXE-Files with same Compilation 2.7. Problems with the Mouse within the IDE 2.8. The Fixup Overflow Syndrome 2.9. The story with ASCII-154 after a Remark in the Inline-ASM 2.10. Error 454: END FUNCTION expected 2.11. Another REMARK-Problem with $ALIAS 2.12. The Mistake CDWRD in the german Online-Help 2.13. The Mistake CVDWRD in the german Online-Help 2.14. Crash when pressing CTRL-C 2.15. Error when producing Output with "CONS:" and CTRL-C 2.16. The Problem with Error 244 in a Stand Alone EXE 2.17. Problems with linking of multiple Lines of Source 2.18. Problems with the WATCH-Window and multidimensional Arrays 2.19. Buggy internal Function/Variable: pbvScrnCols 2.20. Incorrect internal Function/Variable: pbvHost 2.21. A little difference in the new Inline-Assembler of V3.1/3.2 2.22. The dd-Problem in PowerBASIC 3.1/3.2 2.23. Undocumented internal Variables in PowerBASIC 3.0/3.1/3.2 2.24. The PRINT-Bug in PowerBASIC 3.2 2.25. The "File not found"-Error after using NAME 2.26. Calculationerror when using Constants 2.27. Wrong "Bit Movement" with ROTATE 2.28. Overflow when using FOR/NEXT-Loops 2.29. Overflow when using STEP -1 in FOR/NEXT-Loops 2.30. The Bug in the VARPTR32 Command 2.31. The "KEY ON" Bug 2.32. Crash of the PowerBASIC IDE in the Pick- Menu 2.33. Crash of the PowerBASIC IDE with faulty Syntax 2.34. Error when swapping variables using SWAP 2.35. The Multiplexer Interrupt Error in the REG-Command 2.36. Contents of a Directory will be deleted with KILL 2.37. The thing with the "USR" string 2.38. Runtimeerror in the PowerBASIC Helpcompiler 2.39. The Bug "Truncatig" in the PowerBASIC Helpcompiler 2.40. Crash of the PowerBASIC-IDE after calling its own Help 2.0. PowerBASIC-Errorlibraries ------------------------------ For better Security of your own programs I would recommend that you link all Errorlibraries. This is the only way to make sure that PowerBASIC shows a correct Error and not an unexplainable Error at: SELECT CASE pbvrevision You can remove all Errorlibraries in the finished program, because they are only needed in development. The $ERROR-Libraries can be linked within the IDE or directly in your Source. The Settings in the Source are used above the Settings in the IDE! The $ERROR-Libraries are linked as follows: $ERROR NUMERIC ON $ERROR OVERFLOW ON $ERROR BOUNDS ON $ERROR STACK ON Note: Some of the Bugs shown here can only be found with these Libraries linked! 2.1. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.0 --------------------------------------------------- Versions: 3.0 Known : partly removed in version 3.10 The problems shown here only apply to the use of unsigned variables and are shown with variables of type WORD: Example 1: Demo?? = &hA000 causes an Overflow, because PowerBASIC interprets this as a signed variable. This error can be solved by using a real number. Similar effects can occur with the $NUMERIC-System when using the REG()-Command: Example 2: Demo?? = REG(1) can, under special circumstances, cause an Overflow, too, if the passed value would be negative as INTEGER. This error can be solved, if only using variables of type INTEGER with REG(), by removing the NUMERIC-Library when compiling It would be much better though to trash the old BASIC-Crap and do the whole thing in InLine-Assembler right away! :-) It is also interesting to see the 'floating' of error with deactivated $ERROR NUMERIC library. The error occurs some later time in the program, strangely at variables of type WORD, too. Even stranger that you can at best see this at internal PowerBASIC variables of type WORD. Another Overflow effect is hidden behind the PowerBASIC-Functions STRSEG/STRPTR, VARSEG/VARPTR, CODESEG/CODEPTR. Unlike REG(1) the variables MUST be of type WORD, else an Overflow can occur in bigger programs. 2.2. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.1/3.2 ------------------------------------------------------- Versions: 3.1/3.2 Known : Correction recommended at PowerBASIC Inc. One shouldn't think that a new version lets the old bugs be forgotten ;-). Example 1: Demo?? = &hA000 can still cause an Overflow. This can't be demonstrated in one line anymore, because it sometimes still occurs in very complex programs. This still has not changed with version 3.20. Unlike version 3.00 this bug can be passed by using definite unsigned variables: Demo?? = &h0A000 Should you be Toolbox-Developer and want to make sure that your sources work under PowerBASIC 3.0 then enter the following lines: ! mov ax, &hA000 ! mov Demo??, ax Example 2: Demo?? = REG(1) does not cause an Overflow anymore, as far as I know, but you can't be sure about that. But one should still use variables of type INTEGER when using REG. Many PowerBASIC-Functions work better now, others still cause trouble. this affects some special routines which are only set for INTEGER variables, but still work with variables of type WORD. The Overflow problem with STRSEG/STRPTR, VARSEG/VAROTR and CODESEG/ CODEPTR is still existing. 2.3. No OVERFLOW-Error with Doublewords ---------------------------------------- Versions: 3.0/3.1/3.2/3.5 Known : Yes There is no internal Overflow test for Variables of type Doubleword. You can test this with a little example. Example: i??? = -1 PRINT i??? The cause for this problem lies within the Intel CPU itsself, because there is no Overflow created that the Compiler could test for. 2.4. Crash of the PowerBASIC IDE and compiled EXE's while loading ----------------------------------------------------------------- Versions: 3.0/3.1 (3.2 not tested) Known : No (partly) A Crash of the IDE while loading occurs rather rarely and can usually be traced back to one of the following: - QEMM Memorymanagementsystem (up to Version 7.03) - extremly low ammount of free Low Dos Memory - You have tried to load the IDE with the LOADHIGH-Command - 4DOS In most cases the IDE will return to the Commandline with a graphical Error (Cursor within the IDE) while loading. Also struck with this effect are all compiled PowerBASIC-EXE Files. If you want to get around this effect at any cost, you will have to compress the PowerBASIC-EXE with an EXE-Packer like PKLITE. 2.5. EXEs of different size when compiling with PB/PBC ------------------------------------------------------ This isn't really a Bug, because there is only a small difference in the cause of the IDE-Compiler and the Commandlinecompiler, which explains the differently sized EXE-Files. The IDE always compiles the EXE-File with the Settings in the IDE, meaning that if you don't want to compile the VGA-Lib into it, you set it in the IDE. The PBC always compiles the VGA-Lib into it, IF you haven't declared it differently with a Metastatement. The Metastatements are always taken before the IDE-Settings! 2.6. Different EXE-Files with same Compilation ---------------------------------------------- Versions: 3.0/3.1 Known : Seems so A nice effect can be reported, when you compile Sources more than once and then compare them with a Filecompare-Utility. If your free Memory has changed, the created EXE-Files will be different. As far as I see it, the two PowerBASIC Compilers save some Information about the system they were compiled on, which are of Integer/Word type and are at the Offset's &h9C/&hA0. (PB3.1) This effect can be shown as well in the PB-IDE as with PBC. Some say that PB-EXE-Files which were compiled under a PowerBASIC- Shell with PBC seem to crash more often. But even since I have been compiling all of my projects like this for two years, I can not approve to this effect. Version 3.0 of the PowerBASIC-Compiler SHELL seemed to cause other effects with big EXE- Files. The problems were solved back then by using an alternativ PBSHELL-Command. 2.7 Problems with the Mouse within the IDE ------------------------------------------- Versions: 3.0 Known : Seems corrected in Version 3.1 Should you work with a Mouse in the IDE, so that you can insert and cut Sorucecode easily, this could cause a partial crash when marking long texts which go past the right screen border. Furthermore the Mouse cursor does not mark the text correctly. There also seem to be some problems when using the Mouse in the 80*43/50 Mode. 2.8. The Fixup Overflow Syndrome -------------------------------- Versions: 3.0/3.1/3.2 Known : Correction demanded at PowerBASIC Inc. This is my favorite Bug, since it is actually caused by a real error in the programming of a PowerBASIC- User. The description in the Manual, as well as in the Online-Help is slightly irritating, but principally correct. Personally I would decribe the Bug like this: PowerBASIC could not find the named Jumpaddress. A possible cause for this is a SHORT-Jump to a Label not in the valid Area for a SHORT- Jump. Please check all Jumpcommands for validity. There is a small Bug in this Errormessage in both PowerBASIC Versions. But since the human mind will not really believe what is written there, the Source is compiled again (without change). The IDE crashes for doing that immediately. I will save myself a closer description of the working of the different Assemblercommands, especially the different ways of addressing in relation to the CPU. There are many Assemblerbooks out there, and they are something really needed for good programming with the Inline-Assembler anyways. 2.9. The story with ASCII-154 after a REMARK in the Inline-Assembler -------------------------------------------------------------------- Versions: 3.0/3.1/3.2 Known : Error corrected in Version 3.50 There is a nice little thing that can drive you crazy when doing good commenting in the Inline-Assembler Source. It's the story with the ASCII-154 after a REMARK (REM or ; ): Example: CLS PRINT "1" ! nop ; Ue 0 THEN PRINT "CoProcessor " + CHR$(pbvnpx+48) + "87 found!" PRINT PRINT "Shoulod the CoProcessor be turned of for next"; PRINT "measure (Y/N)?" BEEP A$ = UCASE$(INPUT$(1)) IF A$ = "Y" THEN CoPro "AUS" ELSE PRINT "no CoProcessor found!" PRINT PRINT "Should the CoProcessor be turned on for the next"; PRINT "measure (Y/N)?" PRINT PRINT "Note: Turning on a not existing CoProcessor"; PRINT "will cause a crash!" BEEP A$ = UCASE$(INPUT$(1)) IF A$ = "Y" THEN CoPro "EIN" END IF PRINT GOSUB HoleZeitKonstanten GOSUB MesseFORNEXT GOSUB MesseIFTHEN GOSUB MesseSELECTCASE GOSUB MesseMATHEMATIK GOSUB MesseSTRING GOSUB MesseNUMPRINT GOSUB MesseSTRPRINT PRINT END '*********************************************** ' Get the Timeconstants for the different tests '*********************************************** HoleZeitKonstanten: PRINT "Messung der Zeitkonstanten "; t1! = TIMER FOR i& = 1 TO 2000 ' Time for 2000-Loops NEXT i& t2! = TIMER Zc4! = t2! - t1! PRINT "."; t1! = TIMER FOR i& = 1 TO 5000000 ' Time for 5-Mio-Loops NEXT i& t2! = TIMER Zc1! = t2! - t1! PRINT "."; t1! = TIMER FOR i& = 1 TO 100000 ' Time for 100000-Loops NEXT i& t2! = TIMER Zc3! = t2! - t1! PRINT "." t1! = TIMER FOR i& = 1 TO 2000000 ' Time for 2-Mio-Loops NEXT i& t2! = TIMER Zc2! = t2! - t1! RETURN MesseFORNEXT: PRINT "Testing FOR/NEXT : "; t1! = TIMER FOR i& = 1 TO 5000000 'Get 5-Millions-Loop NEXT i& 'i = long integer t2! = TIMER PRINT t2! - t1!; "sec " RETURN MesseIFTHEN: PRINT "Testing IF/THEN : "; t1! = TIMER FOR i& = 1 TO 5000000 IF a%% = 0 THEN 'IF THEN Method ELSEIF a%% = 2 THEN ELSE END IF NEXT i& t2! = TIMER PRINT t2! - t1! - Zc1!; "sec " RETURN MesseSELECTCASE: PRINT "Testing SELECT CASE: "; t1! = TIMER FOR i& = 1 TO 2000000 SELECT CASE A%% 'SELECT CASE Method CASE 0 CASE 1 CASE ELSE END SELECT NEXT i& t2! = TIMER PRINT t2! - t1! - Zc2!; "sec " RETURN MesseMATHEMATIK: PRINT "Testing MATHEMATIC : "; t1! = TIMER FOR i& = 1 TO 2000000 i%% = i%% + 100 'extremly simple Calculations e& = e& * 2 e& = e& \ 2 i%% = i%% - 100 NEXT i& t2! = TIMER PRINT t2! - t1! - Zc2!; "sec " RETURN MesseSTRING: PRINT "Testing STRING's : "; t1! = TIMER FOR i& = 1 TO 2000 A$ = STRING$(20000, 32) A$ = RIGHT$(A$, 10000) + "Test" e%% = INSTR(A$, "Test") A$ = "" NEXT i& t2! = TIMER PRINT t2! - t1! - Zc4!; "sec " RETURN MesseNUMPRINT: PRINT "Testing NUM-PRINT's "; t1! = TIMER FOR i& = 1 TO 100000 LOCATE , 1 PRINT "Testing NUM-PRINT's: "; i&; NEXT i& t2! = TIMER LOCATE , 20 PRINT t2! - t1! - Zc3!; "sec " RETURN MesseSTRPRINT: PRINT "Testing $$$-PRINT's "; t1! = TIMER FOR i& = 1 TO 100000 LOCATE , 1 PRINT "Testing $$$-PRINT's: "; NEXT i& t2! = TIMER LOCATE , 20 PRINT t2! - t1! - Zc3!; "sec " RETURN '********************************************** ' Here is a routine to turn off the CoProcessor '********************************************** SUB Copro(Switch$) SELECT CASE UCASE$(Switch$) CASE "AUS", "OFF", "-" ! mov ax, &h0040 ! mov es, ax ! mov ax, word ptr es:[&h10] ! and ax, &b1111111111111101 ! mov word ptr es:[&h10], ax CASE "EIN", "ON", "+" ! mov ax, &h0040 ! mov es, ax ! mov ax, word ptr es:[&h10] ! or ax, &b0000000000000010 ! mov word ptr es:[&h10], ax END SELECT END SUB =================== 4. Standardproblems =================== 4.1. Compatability between the PBUs and LIBs of the 3.x Versions 4.2. Not enough memory in the PowerBASIC-IDE 4.3. Finding out the filename and path to the filename 4.4. No free memory with ENVIRON$ 4.5. No Returnerrorlevel with SHELL 4.6. Cutting files 4.7. Error 502/514 when using C-OBJ-Files 4.8. Preventing a Warmboot with CTRL-ALT-DEL 4.9. Opening more than 15 Files with PowerBASIC and/or DOS 4.10. HEX$-DWORD Routine for PowerBASIC 3.1/3.2 4.1. Compatability between the PBUs and LIBs of the 3.x Versions ---------------------------------------------------------------- Other than the PowerBASIC-Update from V2.10 to 3.00, the PBU/LIBs of the 3.x Versions are downwards compatible. That means that you can continue to use an under PowerBASIC 3.0 developed PBU/LIB under the two higher PowerBASIC Versions. But you can't use a PowerBASIC 3.1 PBU/ LIB with any of the older Versions. There are probably some differences between the Versions 3.0-3,1 because of the new Number- System when exchanging sourcecode. In that case please read the Chapter 'Errors ...'. 4.2. Not enough memory in the PowerBASIC-IDE -------------------------------------------- There is a Tool by Bob Zale himself which activates parts of the VGA- Graphic-RAM and the parts of the monochrome Herculescard for PowerBASIC. The Tool 'PBPLUS96' (96kByte more RAM) was written for PowerBASIC Version 2.00, but still works with Version 3.10. 4.3. Finding out the filename and the path to the filename ---------------------------------------------------------- We often stand in front of the problem that we can start our program over a path command, but that it can't find its own data and INI-Files anymore after that. The solution is quite simple: DOS saves this information in the PSP or in its Environmentblock. --- Cut -------------------------------------------------------------- '********************************************************************* ' ' Finding the path and filename of the current program in ' PowerBASIC 3.0/3.2 ' ' von Thomas Gohel ' '********************************************************************* $COMPILE EXE ! mov ax, &h6200 ! int &h21 ! mov es, bx ! mov ax, word ptr es:[&h2C] ! mov pbvDefSeg, ax ; undocumented in PowerBASIC 3.0 FOR i%% = 0 TO 1024 IF PEEK$(i%%, 4) = CHR$(0,0,1,0) THEN EXIT FOR NEXT i%% WHILE PEEK(i%% + 4) 0 Temp$ = Temp$ + CHR$(PEEK(i%% + 4)) i%% = i%% + 1 WEND DEF SEG FOR i%%=LEN(Temp$) TO 1 STEP -1 IF RIGHT$(MID$(Temp$,1,i%%),1) = "\" THEN EXIT FOR NEXT i%% ExeDir$ = MID$(Temp$,1,i%%) ExeName$ = MID$(Temp$,i%%+1) PRINT ExeDir$; " "; ExeName$ --- Cut End ---------------------------------------------------------- 4.4. No free memory with ENVIRON$ --------------------------------- This chapter is partly documented in the manuals, but I want to give some advanced tips, because this subject often causes misunderstandig. The structure of the environmentblock in connection with the Program Segment Prefix (PSP) is not documented further, but it is of enourmous meaning gor the better understanding of this error. Shortly said, you can only modify the existing environent, and not add any new entries!! You can use three ways if you want to add entries anyways: a) Delete part of the environment and then add the new entry or first create a Dummy-Environmententry and the delete or modify it using the ENVIRON-Command. b) When you want to start a DOS-SHELL with an information: OldEnv$ = ENVIRON$("PROMPT") SHELL "COMMAND.COM /K SET PROMPT=PowerBASIC " + OldEnv$ The trick with this is that when you call a SHELL a new PSP will be created and the memory will be allocated correctly. c) Get the address of the PSP, get the pointer to the current Environmentblock and then read the environment into a string, where it can be modified. The allocate a DOS-Memoryblock using INT21, save the modified environment therem abd the set the pointer to the Environmentblock within the PSP to the new one. (Also see: Already available PD-Solutions) 4.5. No Returnerrorlevel with SHELL ----------------------------------- You often need to check the Errorcode of an ended program in a SHELL- Command. This is not possible directly under PowerBASIC, because PowerBASIC runs a program using COMMAND.COM and because of that the Errorcode can't be returned (This is a problem of MS-DOS!!). Example: SHELL "C:\DOS\COMMAND.COM /C MEINDEMO.EXE" To solve this problem there is for instance an alternative SHELL- Command in form of a FUNCTION (as Sourcecode): --- Cut --------------------------------------------------------------- '********************************************************************** ' ' Errorlevel in PowerBASIC 3.0/3.2 ' ' by Thomas Gohel (after a pattern from PDS, by Bernd Hohmann) ' '*********************************************************************** $COMPILE EXE DECLARE FUNCTION PBShell%% (FileName$) CLS PRINT PRINT "Fehlercode ist: "; PBShell%%("c:\dos\command.com") END FUNCTION PBShell%% (FileName$) LOCAL Dummy%% Datei$ = FileName$ ' Copy filename. Datei$ = LTRIM$(Datei$) ' Trim filename. i%% = INSTR(Datei$, " ") ' Pass Command ? IF i%% > 0 THEN ' Cmd$ = MID$(Datei$, i%%) ' Cut Command Datei$ = LEFT$(Datei$, i%% - 1) ' Cut filename END IF ' Datei$ = UCASE$(Datei$) i%% = INSTR(Datei$, ".") ' Is a dot in it ? IF i%% > 0 THEN ' Ext$ = MID$(Datei$, i%%) ' Get extension ELSE ' Ext$ = "" ' Extension is empty END IF ' SELECT CASE Ext$ ' Test extension. CASE ".BAT" ' Batch over COMMAND.COM Cmd$ = "/C " + Datei$ + " " + Cmd$ Datei$ = ENVIRON$("COMSPEC") CASE ".COM" ' Free CASE ".EXE" ' Free CASE ELSE ' No Extension, Datei$ = Datei$ + ".EXE" ' Add .EXE. END SELECT ' Datei$ = Datei$ + CHR$(0) ' Create ASCII-String. dNul$ = CHR$(0) + CHR$(0) ' Doublezero for Parameterblock nul$ = SPACE$(127) ' Save 127 bytes for Strings MemFree& = SETMEM(0) ' Get free space x& = SETMEM(-MemFree&) ' Free all memory ' nul$ = "" ' restore 127 Bytes. IF Cmd$ > "" THEN ' Commandline ? CmdLen$ = CHR$(LEN(Cmd$)) ' Length of Cmd$ as String Cmd$ = CmdLen$ + Cmd$ + CHR$(13) ' Length + Cmd$ + '13' segm$ = MKI$(STRSEG(Cmd$)) ' Single parts of the ' Parameter-Block Offs$ = MKI$(STRPTR(Cmd$)) ' Add ( MID$(....) ' = segm$ doesn't work) Param$ = dNul$ + Offs$ + segm$ ' Create Parameterblock. ELSE ' Cmd$ = CHR$(13) ' Start of Bug-Fixed segm$ = MKI$(STRSEG(Cmd$)) ' Segment of Terminator Offs$ = MKI$(STRPTR(Cmd$)) ' Offset -"- Param$ = dNul$ + Offs$ + segm$ ' Create Parameterblock. END IF ' End of Bugfixed DateiSeg%% = STRSEG(Datei$) ' Get addresses DateiOff%% = STRPTR(Datei$) ParamSeg%% = STRSEG(Param$) ParamOff%% = STRPTR(Param$) ! push ds ; Save DS ! mov ax, &h4B00 ; EXEC-Funktion 4Bh / INT 21h ! mov es, ParamSeg%% ; Segment of Parameterblock ! mov bx, ParamOff%% ; Offset of Parameterblock ! mov dx, DateiOff%% ; Offset of Filename ! mov ds, DateiSeg%% ; Segment of Filename ! int &h21 ; Interrupt &h21 ! pop ds ! jc ExecError ! jmp ExecOk ExecError: ! mov Dummy%%, ax SELECT CASE Dummy%% ' Evaluate Error. CASE 1 : PRINT "illegal Function call!" CASE 2,3 : PRINT "File not found: " + FileName$ CASE 4 : PRINT "to many files opened" CASE 5 : PRINT "Access denied " + Filename$ CASE 8 : PRINT "Not enough free memory for " + FileName$ CASE 10 : PRINT "wrong Environmentblock" CASE 11 : PRINT "wrong Format" CASE ELSE: PRINT "Problem while executing " + FileName$ END SELECT ExecOk: Mem2& = SETMEM(MemFree&) ' Completely free memory. IF MemFree& Mem2& THEN ' Free memory changed PRINT "Warning: possibly a TSR was installed!!" END IF ! mov ah, &h4d ; Get Exit-Code ! int &h21 ; Interrupt &h21 ! mov Dummy%%, al PBShell%% = Dummy%% ! mov ah, &h03 ; Pass current cursor ! mov bh, &h00 ; position ! int &h10 ; Interrupt &h10 ! inc dh ; Recalc to basis of 1 ! inc dl ! mov NewZeile?, dh ! mov NewSpalte?, dl LOCATE NewZeile?, NewSpalte? ' Set cursor END FUNCTION - Cut End ------------------------------------------------------------- Further on your can modify the COMSPEC-Variable in your environment and directly run your program with COMMAND.COM. Example: Comspec$ = ENVIRON$("COMSPEC") 'Save COMSPEC ENVIRON "COMSPEC=MEINDEMO.EXE" SHELL 'Execution of MEINDEMO.EXE ENVIRON "COMSPEC="+Comspec$ 'Restore COMSPEC Always remember, that the SHELL-Function always transfers the Parameter '/C' to the executing program, if you want to transfer Commandlineparamters yourself. 4.6. Cutting files ------------------ You often stand in front of the problem that you have cleaned your datafile, but it is still too big. In this case this small but effective trick helps: Example: OPEN "DEMO.DAT" FOR BINARY AS #1 SEEK #1, 20 PUT$ #1, "" CLOSE #1 Shortens the file 'DEMO.DAT' to a length of 20 Bytes. 4.7. Error 502/514 when using C-OBJ-Files ----------------------------------------- When using C-OBJ-Files you should take care that there not multiple Statements for the Datasegment in it, because PowerBASIC only supports one Datasegment per OBJ-File. Since there is no solution known to me and there seems to be none from PowerBASIC, it seems that it is your only choice to adapt your C- Source. 4.8. Preventing a Warmboot with CTRL-ALT-DEL -------------------------------------------- The following Source prevents a possible Warmboot: Example: KEY 15, CHR$(&h0C, &h53, &h73) ON KEY(15) GOSUB NoBoot KEY(15) ON DO IF INKEY$ "" THEN EXIT LOOP LOOP PRINT "Done!" END NoBoot: PRINT "Warmboot not wanted!!" RETURN 4.9. Opening more than 15 Files with PowerBASIC and/or DOS ---------------------------------------------------------- You often seem to come to the limits of PowerBASIC when you want to open more than 15 Files. But this is not a problem of the Compiler, but a genetic birth error of MS-DOS. I'll have to bring up some of the dark sides of DOS in order to describe this effect, baecause this is where we find the answer. Many of you know that when a file is opened, a handle is returned from DOS. Now where does DOS save this handle an the information belonging to that handle? To many of you PSP (Program Segment Prefix) is a well known statement (already described shortly in the finding of the filename). If not, you shoud better not read the following explanations and just test the source. This PSP also contains a table, which was declared reserved by Microsoft, but its use is widely known. This table is called 'Job File Table' (short JFT) and is located at Offset 18Hex from DOS 2.0 on and is a 20 fields long BYTE-Array. When you now subtract the used handles for: NUL, $CLOCK, CON, AUX and PRN, what is left over are the magic 15 usable handles. But it is only job of the JFT to manage a pointer to the 'System File Table', short SFT. The SFT on the other hand is a structure similar to a MCB (Memory Control Block), which manages important data like Startclusters and Sharingattributes. A SFT of this kind can only hold a limited amount of handles, to raise this you have to include a higher amount with FILES in your CONFIG.SYS. After a restart of the system MS-DOS reserves more MCBs marked as SFT. Now you can theoretically open more than 20 Files, because the default numbe of FILES is '8'. Unluckily we come to another limited number of entries in the JFT within the PSP. There is a solution from MS-DOS 3.3 on, because the Interrupt &h21, function &h67 enables you to raise the amount of usable handles. But how is this done when the space in the PSP is limited?? Therefore we remember some of the undocumented fields within the PSP. Offset &h32 has become interresting, because this holds the new size of the JFT in WORD. After that there is the new pointer to the Extended JFT. Interrestinf is, that the new array is an array of WORD. Theoretically 65535 handles can be managed like that, but that is hypothetically, because the SFT can only handle 255 entries. Actually there are two important things when creating a new JFT: - The new JFT needs memory, that means that you have to decrease the size if the current programs Heap! - Ab extended JFT will not be passed to a Childprogram with SHELL/ EXECUTE! The 15 Files Border still exists for the Childprogram. Ok, but now here is the Source: '*********************************************************************** ' ' Set the Amount of uasable Handles in PowerBASIC 3.2 ' ' developed by Th.Gohel Fido: 2:2410/301.12 ' InterNet: support@pbsound.snafu.de ' Homepage: http://www.snafu.de/~pbsound/ ' '*********************************************************************** MaxFiles%% = 30 ' Same as FILES = 30 PBFiles MaxFiles%% ' Set the amount of usable Files FOR i%% = 1 TO MaxFiles%% ' Test all usable Files PRINT "Opening File: PBFILES." + STR$(i%%) OPEN "PBFILES." + STR$(i%%) FOR BINARY AS i%% PUT$ i%%, "Testfile" + STR$(i%%) + " for PBFILES, please delete!" NEXT i%% FOR i%% = 1 TO MaxFiles%% ' and close again CLOSE i%% NEXT i%% SUB PBFiles(BYVAL MoreFiles%%) x& = SETMEM(-255) ' Should be enough for all cases ! mov ah, &h67 ; Set amount of usable Handles ! mov bx, MoreFiles%% ; ! add bx, 6 ; The Standard-Handles for PB ! int &h21 ! jnc PBFiles_Ok PRINT "Error while creating the usable Handles!!" PBFiles_Ok: END SUB 4.10. HEX$-DWORD Routine for PowerBASIC 3.1/3.2 ----------------------------------------------- The following routine should make HEX$-Support possible for variables of type DWORD, which is missing for some reason. Example: d??? = &h1234ABCD PRINT DHex$(d???) FUNCTION DHex(HexDWord???) AS STRING DIM Lo AS WORD DIM Hi AS WORD ! les bx, [bp+6] ! mov ax, es:[bx+0] ! mov Lo??, ax ! mov ax, es:[bx+2] ! mov Hi??, ax DHex = RIGHT$("000" + HEX$(Hi??), 4) + RIGHT$("000" + _ HEX$(Lo??), 4) END FUNCTION ================================================ 5. Hints in connection with the Inline-Assembler ================================================ Shortindex: 5.1. Principles of the function of the Inline-Assembler 5.2. Assembler Syntax Error 5.3. Faulty passing of Variables in the Inline-Assembler 5.4. Problems with LDS/LES 5.5. Crash after calling own INT-Functions 5.6. Fixup Overflow 5.7. Dividing Variables from WORD to BYTE 5.8. Dividing Variables from DWORD to WORD 5.9. Access to Arrays / Structures with the Inline-Assembler 5.10. Parameter return with the Inline-Assembler 5.11. Parameter return in Interrupt-Procedures 5.12. Creating 32bit-Pointers 5.13. Converting from REG to Inline-ASM 5.14. Converting from A86 to Inline-ASM The tips shown here are not a tutorial in Inline-Assembler, but may help solve many beginner mistakes. A more detailes description of the interactions will not be written here, if it does not belong to the problem itself. 5.1. Principles of the function of the Inline-Assembler ------------------------------------------------------- The PowerBASIC Inline-Assembler contains the functions of the Intel 8086 CPU. This means that you may have to adapt the Inline-Assembler- Code of other High-Language-Compilers or true Assembler-Code to the PowerBASIC Inline-Assembler, because they quite often contain 80286 commands. Usually the following commands have to be converted: Source - > PowerBASIC shr ax, 2 ! shr ax, 1 ! shr ax, 1 or like this: ----------------------------------------------------------- shl ax, 3 ! push cx ! mov cl, 3 ! shl ax, cl ! pop cx ----------------------------------------------------------- pusha ! push ax ! push bx and so on until all registers are saved ----------------------------------------------------------- popa analog, only restore registers 5.2. Assembler Syntax Error --------------------------- When we forget the 'true' Syntax Errors, which usually occurs when you are not quite used to Assemblercommands, there still is an 'obvious' Syntax Error which can be marked by the Inline-Assembler of PowerBASIC. This is the case when the Compiler can't use a Variable in the Inline-Assembler because it isn't defined in any way. PowerBASIC usually creates used Variables within true BASIC-Source by itself and allocates memory for it. You have to do that yourself within the Inline-Assembler. Example: ! mov ax, Demo%% This causes a Syntax Error because the Compiler can't do anything with the Variable 'Demo%%'. You should first set the Variable to a value: Demo%% = 1 ! mov ax, Demo%% Now the Compiler accepts the Assemblerline. You don't have to assign a value to a Variable every time, a simple DIM or SHARED, PUBLIC, LOCAL etc. is enough and initialises 'Demo%%'. 5.3. Faulty passing of Variables in the Inline-Assembler -------------------------------------------------------- You probably often swore around because a working routine with REG(x) didn't work crrectly after conversion to the Inline-Assembler or when your Testroutine wouldn't do its job in a SUB/FUNCTION. The solution is relatively simple: You have to pass the variables to the Inline-Assembler BYVAL. Example: Demo 1 FUNCTION Demo(BYVAL i%%) public ! mov ax, i%% ! inc ax ! mov i%%, ax PRINT i%% END FUNCTION This little Demo simply adds the value '1' using the Inline-Assembler and then prints it on the screen. Simply leave out the BYVAL and then test the Demo again! 5.4. Problems with LDS/LES -------------------------- Compareable to the passing of the parameters is the function of the commands LDS/LES. It is also essential whether a variable is passed 'BY COPY', 'BY REFERENCE' or 'BY VALUE'. The followingcan be taken as rule of thumb: BY REFERENCE: - default in the main program - or when a variable is declared SHARED/PUBILC etc. BY COPY: - default in a SUB/FUNCTION, if the variables aren't passed BY VALUE. BY VALUE: - always interpreted by the Inline-Assembler as BY VALUE You should only pass variables of type BY COPY to LDS/LES, because only then the DS/ES Segmentaddresses will be loaded and the Offsetaddresses into the other Registers. When passing BY REFERENCE DS/ES will be loaded with the high value contents of the variable, if of type Long/DWord, else the DS/ES Register will contain an irrelevant value. The other Registers will contain the low value of the variable. Example: SHARED DemoSeg%%, DemoOff%% i& = &h12345678 Demo1 i& Demo2 i& Demo3 i& FUNCTION Demo1(i&) public PRINT "PB-Adresse : ";: PRINT HEX$(VARSEG(i&));":"; HEX$(VARPTR(i&)) END FUNCTION FUNCTION Demo2(i&) public ! les bx, i& ! mov DemoSeg%%, es ! mov DemoOff%%, bx PRINT "LES /BY COPY : ";: PRINT HEX$(DemoSeg%%);":"; HEX$(DemoOff%%) END FUNCTION FUNCTION Demo3(BYVAL i&) public ! les bx, i& ! mov DemoSeg%%, es ! mov DemoOff%%, bx PRINT "LES /BY VALUE: ";: PRINT HEX$(DemoSeg%%);":"; HEX$(DemoOff%%) END FUNCTION 5.5. Crash after calling own INT-Functions ------------------------------------------ You will ask yourself: Why this section in the FAQ? Does the PowerBASIC Inline-Assembler have any Bugs? The answer is definetly: NO. But many calls using INT-Functions of the BIOS/DOS are connected to some trouble, because they change important Segments or specially address them. Many buffers that have to be passed to a function look for their pointer in the Datasegment-Register (DS). PowerBASIC also addresses its variables using DS, so that conflicts are 'programmed' here. It should not be like this, for example: ! mov ax, &h3D90 ; Function File open ! mov ds, FileSeg?? ; Load segment of Filename, ! mov dx, FileOff?? ; First error, because FileOff?? ; can't be addressed using DS. DS ; is already pointing somewhere else. ! int &h21 ; INT-Call ! mov Handle%%, ax ; Because DS still points to nowhere ; for PowerBASIC, this is wrong, too, ; and PowerBASIC will crash sooner or ; later. A clean listing should look like this: ! push ds ; Save DS ! mov ax, &h3D90 ! mov dx, FileOff?? ; Load Offset of Filename ! mov ds, fileSeg?? ; Load Segment of Filename, not needed ; by PowerBASIC anymore ! int &h21 ; INT-Call ! pop ds ; Restore PowerBASIC Segment ! mov Handle%%, ax ; Save Handle%% (Or Errorcode) ! jnc ... ; Check Carry-Flag 5.6. Fixup Overflow ------------------- The problem is relatively easy and simple: The 8086 CPU only allows jumps of type SHORT, meaning that you can only jump to labels within -127/+128 OpCodes directly. The following example also creates such an error: DemoLabel: ! jc DemoLabel To get around this, you'll just have to address the whole thing a little different. This is principally no problem once you know it: DemoLabel: ! jnc DemoWeiter ! jmp near DemoLabel DemoWeiter: But this can be found in any good Assembler book... 5.7. Dividing variables from WORD to BYTE ----------------------------------------- Should you still turn your 16bit variables into its 8bit parts with mathematical work, it is time to finally stop it! The CPU can do it by itsself: Example: DIM Demo AS WORD DIM DemoHigh AS BYTE DIM DemoLow AS BYTE Demo?? = &H1234 ! mov ax, Demo?? ! mov DemoLow? , al ! mov DemoHigh?, ah 5.8. Dividing variables frob DWORD to WORD ------------------------------------------ More often you have the problem that you have pointers of type DWORD in PowerBASIC, but you don't know how to pass them to the Inline- Assembler or turn them into WORD. Principally this is quite simple (When you know how): Example: DIM Demo AS DWORD DIM DemoHigh AS WORD DIM DemoLow AS WORD Demo??? = &H12345678 ! mov ax, Demo???[00] ! mov bx, Demo???[02] ! mov DemoLow??, ax ! mov DemoHigh??, bx 5.9. Access to Arrays / Structures with the Inline-Assembler ------------------------------------------------------------- Access to static Datastructures is relatively easy with the Inline- Assembler if you already know the correct Offsetaddresses. PowerBASIC allows the following Syntax: Example: ! mov ah, byte ptr es:[di][22] This copies the value to Offset 22 of the address ES:DI into the AH- Register. 5.10. Parameter return with the Inline-Assembler ----------------------------------------------- In opposite to true Assembler the return of a variable works slightly different in the PowerBASIC Inline-Assemble. PowerBASIC 3.0 for example does not allow the direct return from the Inline-Assembler to the FUNCTION, this is only possible with a little trick. Example: High%% = &h1234 Low%% = &h4578 PRINT HEX$(Demo1&(High%%, Low%%)) FUNCTION Demo1&(BYVAL High%%, BYVAL Low%%) LOCAL Dummy& ! mov dx, High%% ! mov ax, Low%% ! mov Dummy&[02], dx ! mov Dummy&[00], ax Demo1& = Dummy& END FUNCTION From PowerBASIC 3.1 on you can directly pass the return value to the FUNCTION, only with 32bit (and bigger) values have to be passed using a little trick: Example: High%% = &h1234 Low%% = &h4578 PRINT HEX$(Demo2&(High%%, Low%%)) FUNCTION Demo2&(BYVAL High%%, BYVAL Low%%) ! mov dx, High%% ! mov ax, Low%% ! mov FUNCTION[02], dx ! mov FUNCTION[00], ax END FUNCTION 5.11. Parameter return in Interrupt-Procedures --------------------------------------------- Very hard is the passing of variables from within an own Interruptroutine, because you can guess that the Datasegment isn't the same as the one used by PowerBASIC. But the developers of PowerBASIC have left us a big back door here. The addressing using the Codesegment, which is usually the same! Yet this trick only works with the Inline-Assembler, to pass from/ to true PowerBASIC-Routines you will have to recopy this variable. Example: ! mov ax, &h1234 ! mov Demo, ax ! mov bx, Demo ! retn Demo: ! dw 0 Should you look at this thing with a Debugger, you will notice that PowerBASIC will add the Prefix &h2E (addressing using the Codesegment) in front of the access to the variable and the '!dw 0' field will hold the value &H1234. 5.12. Creating 32Bit-Pointers ----------------------------- Often 32Bit Pointers are needed for some Interrupt-Procedures to call old Interrupt-Handlers or Devicedrivers like CTVDSK/CT-VOICE and HIMEM/ MSCDEX. Because the creation of a 32Bit Pointer was described in a previous Chapter, here is the actual Syntax: Example: ! jmp dword Demo& ! jmp dword ptr Demo& ! call dword Demo& ! call dword ptr Demo& The pointers can also be taken from the Codesegment! 5.13. Converting from REG to Inline-Assembler --------------------------------------------- The conversion from REG- to Inline-Assemblersources is also relatively simple. Instrad of the REG-Command, which buffers the Contents of the Processorregisters in an internal REG-Array, an access over the Inline- Assembler causes a direct manipulation of the Processorregister. The REG-Command passes the REG-Values when CALL INTERRUPT is executed. Please not this difference and you will have not as many problems. You can translate all other commands 1:1: Example: REG 1, &h12345 -> ! mov ax, &h1234 REG 2, &hFF -> ! mov bl, &hFF REG 3, &h22 * 256 -> ! mov ch, &h22 REG 4, &hAABB -> ! mov dh, &hAA ! mov dl, &hBB REG 9, Demo%% -> ! mov es, Demo%% CALL INTERRUPT &h21 -> ! int &h21 Low?? = REG(1) AND 255 -> ! mov low??, al High?? = REG(1) \ 256 -> ! mov High??, ah 5.14. Converting from A86 to Inline-Assembler --------------------------------------------- Usually a translation of A86-Sources can be done without problems. Remove the Stackborder and include the Assemblerlines into the Inline- Assembler. It will be best ig you create a FUNCTION call that passes the variables BYVAL, the rest is done by PowerBASIC. ======================================= 6. Hints for Pointers in PowerBASIC 3.2 ======================================= Shortindex: 6.1. Pointers in general 6.2. What are pointers, and what are they for? 6.3. PowerBASIC-Pointers and dynamic strings 6.4. PowerBASIC-Pointers and fixed length strings 6.5. PowerBASIC-Pointer and FLEX-Strings 6.6. PowerBASIC-Pointer and TYPE structures 6.7. A little Demonstration (source) 6.1. Pointers in general ------------------------ Pointers in BASIC have been the cause for many discussions so far. PowerBASICS's Dynamic Memory-Managment has been an argument why Pointers in BASIC (if not impossible) don't make any sense. The following paragraphs will show that this is wrong. Dynamic Memory- Managment (which by the way is a real advantage of this language) and pointers are a possible combination. For the understanding of the follwing, knowledge of the interna of BASIC and DOS helps a lot 6.2. What are pointers, and what are they for ? ----------------------------------------------- Pointers do what their name says: they point. They allow interpreting every single byte of your computers memory up to 1 Megabyte. All you have to do is to assign any memory adress to the pointer. Pointers are useful to get to areas of the memory that are outside of PowerBASIC's Dynamic-Memory- Managment and they let you directly get hold of the Pointers that are given back by some DOS-Functions like: - Directory Table Area - Drive Parameter Block - DOS Info Block - PSP - Environment Block - and and and ... With pointers you can forget all those tiresome "old friends" like DEF SEG/POKE/PEEK or DEF SEG = PEEKI(...)! 6.3. PowerBASIC-Pointers and dynamic strings -------------------------------------------- String-Pointers to dynamic strings are defined in PowerBASIC with: DIM Pointer AS STRING PTR The Pointer is assigned as follows Pointer = VARPTR32(Demo1$) Example: '*************************************************************** ' ' Demosource showing how to handle pointers and dynamic strings ' '*************************************************************** DIM Pointer1 AS STRING PTR ' defining string pointer for ' dynamic strings Pointer1 = VARPTR32(Demo1$) ' assign the pointer CLS PRINT "Adress: Demo1$: Pointer1:" Demo1$ = "123456" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 Demo1$ = "654321" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 Demo1$ = "!Test!" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 6.4. PowerBASIC-Pointers and fixed length strings ------------------------------------------------- String-Pointers to fixed strings are defined in PowerBASIC with: DIM Demo AS STRING * 6 DIM Pointer AS STRING PTR * 6 The Pointer is assigned as follows Pointer = VARPTR32(Demo$) Example: '*************************************************************** ' ' Demo showing how to handle pointers and fixed length strings ' '*************************************************************** DIM Demo2 AS STRING * 6 ' define string with fixed length DIM Pointer2 AS STRING PTR * 6 ' define Pointer with fixed length Pointer2 = VARPTR32(Demo2$) ' assign the pointer PRINT PRINT PRINT "Adress: Demo2$: Pointer2:" Demo2$ = "123456" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 Demo2$ = "654321" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 Demo2$ = "!Test!" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 6.5. PowerBASIC-Pointer and FLEX-Strings ---------------------------------------- String-Pointers to FLEX-Strings are defined in PowerBASIC with: DIM Demo AS FLEX DIM Pointer AS FLEX PTR The Pointer is assigned as follows Pointer1 = VARPTR32(Demo1$) To use FLEX-Strings you have to use MAP before assigning the Pointer!! Example: '*************************************************************** ' ' Demosource showing how to handle pointers and FLEX-Strings ' '*************************************************************** DIM Demo3 AS FLEX ' define string as FLEX! DIM Pointer AS FLEX PTR ' define pointer as FLEX PTR! MAP Demo3$$ * 10 ' FLEXCHR$ = "." Pointer = VARPTR32(Demo3$$) ' assign the pointer PRINT PRINT PRINT "Adress: Demo3$$: Pointer:" Demo3$$ = "123456" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer Demo3$$ = "654321" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer Demo3$$ = "!Test!" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer 6.6. PowerBASIC-Pointer and TYPE structures ------------------------------------------- String-Pointers to TYPE structures are defined in PowerBASIC with: TYPE Demo4_Struc ' define TYPE Demo5 AS BYTE Demo6 AS BYTE END TYPE The Pointer is assigned as follows DIM TypeDemo AS SHARED Demo4_Struc PTR You will find an example of pointers and TYPE structures in the following Source. 6.7. A little Demonstration (source) ------------------------------------ '************************************************************************ ' ' Handling the Video Ram with pointers in PowerBASIC 3.2 ' ' (c) Thomas Gohel ' ' A little demonstration that pointers have really no(!!) problem with ' the internal memory-managment. For the successful use of Pointers you ' need very good knowledge of the interna of PowerBASIC. ' ' This demo abuses the video-ram as storage for strings and shows how ' PRINT commands modify the contents of the two pointers VIDEORAM and ' ZEICHEN. ' ' This routine can be used for fast saving and restoring of the complete ' video-ram: ' ' @Videoram.Page2 = @Videoram.Page1 ' ' will save the complete content of the first (Video)page to the second ' page for later restauration. ' '************************************************************************ TYPE Zeichen_Struc ' TYPE of a single sign Wert AS BYTE Farbe AS BYTE END TYPE TYPE Screen_Struc ' TYPE for pages of the video ram Page1 AS STRING * 4096 ' page 1 Page2 AS STRING * 4096 ' page 2 Page3 AS STRING * 4096 ' page 3 Page4 AS STRING * 4096 ' page 4 END TYPE DIM Zeichen AS SHARED Zeichen_Struc PTR ' define the TYPE-structur DIM Videoram AS SHARED Screen_Struc PTR ' as pointers Videoram = pbvScrnBuff ' Move TYPE-structur to the Be- ' ginning of the video ram. ' PowerBASIC is using/handling ' video ram as fixed memory for ' strings now! :-))) Zeichen = pbvScrnBuff ' TYPE-Structur is to use the ' same memory-areas as PRINT ' and VIDEORAM SCREEN 0 ' set screen-mode CLS ' clear screen PRINT "Dies ist ein Test" ' normal PRINT on the ' screen A$=INPUT$(1) PRINT LEFT$(@Videoram.Page1,34) ' show that the PRINT-command ' has filled our structur ' too !! A$=INPUT$(1) @Videoram.Page2 = @Videoram.Page1 ' save page1 to page2 @Zeichen.Wert = 76 ' now ZEICHEN is filled with ' a value. At the same time ' the change ist shown on the @Zeichen.Farbe = 14 ' screen and VIDEORAM is ' modified too ! PRINT LEFT$(@Videoram.Page1,34) A$=INPUT$(1) @Videoram.Page1 = @Videoram.Page2 ' restore page1 frome page2 Pointer_Speed_Test: PRINT STRING$(25*80,178); ' filling the screen LOCATE 1, 14 COLOR 11, 1 PRINT " -= STRING-Manipulation inside the"; PRINT " Video RAM ! =- " @Videoram.Page2 = @Videoram.Page1 COLOR 14, 1 LOCATE 8,20: PRINT "+----------------------------------------+" FOR i%% = 9 TO 18 LOCATE i%%, 20 PRINT "| |" NEXT i%% LOCATE 10, 22: PRINT " Video RAM is handled as string" LOCATE 11, 22: PRINT " " LOCATE 13, 22: PRINT " -= Demo for the PowerBASIC-FAQ =- " LOCATE 19, 20 PRINT "+----------------------------------------+" @Videoram.Page3 = @Videoram.Page1 FOR i%% = 1 to 1000 @Videoram.Page1 = @Videoram.Page2 @Videoram.Page1 = @Videoram.Page3 NEXT i%% FOR i%% = 1 TO 10 FOR Durchlauf%% = 1 TO 256 Zeichen = pbvScrnBuff FOR Offset%% = 1 TO 2048 IF @Zeichen.Wert > 32 THEN DECR @Zeichen.Wert END IF Zeichen = Zeichen + 2 NEXT Offset%% NEXT Druchlauf%% @Videoram.Page1 = @Videoram.Page3 NEXT i%% '************************************************************************ =================================================== 7. Hints in Connection with Turbo-C or Borland C++ =================================================== Short overview: 7.1. The author 7.2. Why write/use external routines for PB3 in C 7.3. The correct memory model 7.4. Limitations by the PowerBASIC 3.x compiler/-linker 7.5. Passing Parameters 7.6. PowerBasic example 7.7. Corresponding C module 7.8. The assembler code, corresponding to the C module 7.9. Usage of routines from external C libraries 7.10. Preparations if PB V2.1 is used 7.1. The author --------------- The hints for "PowerBASIC in cooperation with C compilers like Turbo-C or Borland C++ have been contributed to This FAQ by: Andras Hoeffken Andras Hoeffken Andras Hoeffken Very useful hints can also be found in the file CTOPB.FAQ contained in the original PB Vs. 3.2 distribution. 7.2. Why write/use external routines for PB3 in C ------------------------------------------------- - C routines produce fast running code - for extremely fast code: first write a C source, then let the C Compiler translate this source to ASM code (is done much faster as if one would write ASM code directly, see example), finally optimize the ASM code - Routines from external C libraries can be used with PB 7.3. The correct memory model ----------------------------- For the generation of *.EXE files (e.g. by MASM or C + LINK) different memory models can be selected, e.g. Tiny, Small, Medium, Compact, Large, Huge, ... For the *.EXE files, generated by PowerBASIC, the following is valid only: PowerBASIC 3.x - memory model = LARGE (PB uses 32-bit FAR pointers for both code- and datasegments) The Borland C compiler in his menu: Options / Compiler / Code Generation / Model has therefore to be set to the LARGE model. 7.4. Limitations by the PowerBASIC 3.x compiler/-linker ------------------------------------------------------- a) The PB3 linker can only link .OBJ modules, which have ONE data segment, with a 2nd data segment or a DGROUP the PB3 linker refuses work and produces Errors. - C compilers in their default set-up always use several data segment names, which are combined i a DGROUP (this has certain advantages). For the cooperation with PB, the IDE of the C-Compilers in its menu: Options / Compiler / Names must therefore be set up like: Code Segment: _TEXT Bss Segment: _DATA Code Group: Bss Group: Code Class: TEXT Bss Class: DATA Data Segment: _DATA Far Data Segment: Data Group: Far Data Group: Data Class: DATA Far Data Class: (the stars, originally present, MUST be erased!) Now, the C compiler produces only ONE data segment name and no more a DGROUP ! b) The PB3 linker ( 0 */ { stdata = (char far *) MK_FP(*stseg, *stofs); /* fetch the pointer */ if (stdata) /* if we have a valid string */ *stdata = '*'; /* replace first character */ } /* (do NOT overwrite the string length !) */ } --- Cut End -------------------------------------------------------- 7.8. The assembler code, corresponding to the C module ------------------------------------------------------ If someone is uncertain about the code, produced by the C compiler: get the corresponding ASM code and look, how compact and fast the C generated code is. To get the ASM code, shown below, first the above module PB3_TBC.C was compiled to PB3_TBC.OBJ (with the set-up of par. 7.4 !!), then with a disassembler for .OBJ-Files (OBJ2ASM.EXE) the following file PB3_TBC.ASM was gained. (You can instead order the IDE of the C compiler to produce equivalent ASM code, too. But with an external .OBJ disassembler, you are quite better sure, what the PB3_TBC.OBJ module really contains) --- Cut ------------------------------------------------------------ ;File PB3_TBC.ASM (disassembled from PB3_TBC.OBJ) _TEXT SEGMENT BYTE PUBLIC 'CODE' _TEXT ENDS _DATA SEGMENT WORD PUBLIC 'DATA' ;attention: no BSS segment, no DGROUP !! _DATA ENDS PUBLIC _addab PUBLIC _chst _TEXT SEGMENT assume cs: _TEXT assume ds: _DATA _addab: push bp mov bp,sp ; c = a + b: les bx,dword ptr [bp+006h] ; a mov ax,es:[bx] add ax,[bp+00Ah] ; + b les bx,dword ptr [bp+00Ch] mov es:[bx],ax ; c ;e = c + d: mov ax,es:[bx] ;c (line can be put out for optimization) add ax,$S1 ; + d mov dx,seg _DATA mov es,dx mov es:$S2,ax ; e ;return e: mov ax,seg _DATA ; (line can be put out for optimization) mov es,ax ; (line can be put out for optimization) mov ax,es:$S2 ; ax = e pop bp retf _chst: push bp mov bp,sp sub sp,+004h les bx,dword ptr [bp+00Eh] ; len(a$) cmp word ptr es:[bx],+000h ; nul? jz $L3 ; yes les bx,dword ptr [bp+006h] ; strseg(a$) - segment mov ax,es:[bx] les bx,dword ptr [bp+00Ah] ; strptr(a$) - offset mov dx,es:[bx] mov [bp-002h],ax ; own pointer mov [bp-004h],dx mov ax,[bp-004h] or ax,[bp-002h] ; pointer = 0? jz $L3 ; yes les bx,dword ptr [bp-004h] ; points to first string char mov byte ptr es:[bx],2Ah ; overwrite char with '*' $L3: mov sp,bp pop bp retf _TEXT ENDS _DATA SEGMENT $S1 dw 00001h ; initialized data $S2 dw 00000h ; uninitialized data (here NOT in the ; BSS segment!) _DATA ENDS END --- Cut End -------------------------------------------------------- 7.9. Usage of routines from external C libraries ------------------------------------------------ Although PB v3.x is much better adapted to C conventions than PB v2.1, it's mostly still NOT possible to immediately link .OBJ modules, corresponding to the normal C standard. Reason: C generates more than one data segment together with a DGROUP. To overcome this, one has to use C or ASM source code and to re-compile/re-assemble these sources with corresponding to the aspects of par. 7.3 and 7.4a. There are 2 possibilities: - With Borland C++ for the most runtime libraries the complete source code is delivered with the standard distribution including instructions, how to change the sources, and including MAKE files to re-generate own versions of the library modules. - If for an .OBJ module no source code is available, it's mostly possible with small modules to get the corresponding ASM source code by using an .OBJ-disassembler. Then, after having adapted the definitions of the data segments correctly to the PB3 conventions, it can be re-assembled again. 7.10. Preparations if PB V2.1 is used ------------------------------------- The difference between PB v3.x and PB v2.1 is like follows: PB v2.1 does not know a "$ALIAS" instruction. AS PB v2.1 can not work with "_" (underscores), in the IDE of the C compiler additional switches have to be changed: - with segment names (see par 7.4a) "_" are not allowed - in the menu "Options / Compiler / Advanced Code Generation" one has to deactivate the switch "Generate underbars". PB v2.1 does not know the CDECL instruction. One therefore has to put instructions into the C source code, that the C functions have to be compiled corresponding to the PASCAL-conventions (this corresponds to the PB-convention). For this, e.g in the example of par 7.6 and 7.7, the following (changed) lines have to be used: DECLARE FUNCTION addab (a, BYVAL b, c) DECLARE SUB chst (word, word, integer) int pascal addab(int far *a, int b, int far *c) void pascal chst(unsigned far *stseg, unsigned far *stofs, int far *stlen) ================================================================ 8. Hints about conversion of Sources from PDS to PowerBASIC 3.x ================================================================ (from Mark Junker@2:2437/47.21 / mjs@prg.hannover.sgh-net.de) Generally you can say that PDS-Sources can be converted into PB3- Sources. Exceptions are Sources which access foreign libraries and use of dimensioned elements in a TYPE-Structure. So, the following does not allow a conversion: - Foreign libraries (like VESA-LIB and everything else there is out there...) - Dimensioned elements in a TYPE-Structure Example: TYPE tTest TestElement1 AS LONG TestElement2(2 to 7) AS INTEGER TestElement3 AS LONG END TYPE - There may be no COMMON, but all variants of the COMMON SHARED- Command are allowed. Exception: - When COMMON is used to pass parameters to a file called by CHAIN. - When it is irrelevant that the variables behind the COMMON are available in all procedures. - Arrays with more than 8 Dimensions - REDIM PRESERVE is not flexible enough yet - More than 16 Parameters when calling a procedure When all of these things are not implemented, then the following things have to be changed while converting: Basic PDS: |PowerBASIC 3: ---------------------------------+--------------------------------------- SSEG |STRSEG SADD |STRPTR SSEGADD |STRPTR32 |STRPTR32 is only availble from PB3.2 on VARSEG/VARPTR |IMPORTANT: PB3 passes UNSIGNED values, |PDS passes SIGNED values. |This can be changed using $OPTION |SIGNED OFF. ---------------------------------+--------------------------------------- Offset of a file opened with OPEN|PB starts every file, you choose, starts with '1'! |at Zero (Standard) or at one. This can |be changed with the following command: |OPTION BINARY BASE 1 |for the start at '1' ---------------------------------+--------------------------------------- DIM SHARED VarName%% |This command can be converted in |two ways: |- DIM VarName%% | SHARED VarName%% |- DIM VarName AS SHARED INTEGER ---------------------------------+--------------------------------------- SHARED VarName() AS STRING*3 |Here we have the problem with Strings |of fixed length, when they can't be |SHARED in the main program. |You may not make any Type-statements |('AS xxx') after SHARED. | SHARED VarName as string | will become: SHARED VarName$ | or: SHARED VarName :'in SUBs ! | |You can SHARE FIXED-LENGTH-STRING-Arrays |like this: |DIM VarName(MIN,DimNum) AS STRING*3 |or |DIM VarName(MAX,DimNum) AS STRING*3 |where 'DimNum' is the number of |Dimensions of the Array and the number |must be entered in the program directly. ---------------------------------+--------------------------------------- COMMON SHARED /Block/ VarN%% |All three variants of the COMMON- COMMON SHARED VarN%% |command must be replaced in the main |program using PUBLIC and in the external |module (under PB: UNIT) using an EXTERNAL |You have to watch that the variable names |MUST be identifyable, and without a Type. |All Type-Structures 'AS xxx' are not |valid in PB3. |Die Block-statement (/Block/) is not |needed, because everything is not |chained to the name. (->Incompatibility!) ---------------------------------+--------------------------------------- COMMON VarN%% |Can only be converted if the variable |after the COMMON will be passed to a |program started with the CHAIN-Command, |or the COMMON could be a COMMON SHARED |i.E. |It is not allowed to use Type-statements |('AS xxx'), like with the COMMON SHARED. |All Type-statements must be removed ---------------------------------+--------------------------------------- '$INCLUDE: 'filename.ext' |$INCLUDE "filename.ext" '$DYNAMIC |$DYNAMIC '$STATIC |$STATIC ---------------------------------+--------------------------------------- CONST VarName$ = "xyz" |The variable must be replaced in the CONST VarName# = 1.23 |whole program with the specified value. CONST VarName! = 1.23 | CONST VarName@ = 1.23 | ---------------------------------+--------------------------------------- CONST VarName%% = 123 |Becomes CONST VarName& = 123 |%%VarName = 123 both times. |If a Constant-Name is used twice, |with different Datatypes, one of the |two must be replaced in the entire |source with 'VarName%%' or 'VarName&'. ---------------------------------+--------------------------------------- IF x THEN : ' Test |In PB only the ':' has to be something |removed and it will be compiled without END IF |problems. ---------------------------------+--------------------------------------- DIM x AS STRING*3 |This FIXED-LENGTH-STRING can not be CALL Test(x) |passed to a procedure without END |problems, because PB needs a VARIABLE- SUB Test(x$) |LENGTH-STRING or instead of the 'x$' an END SUB |'x AS STRING * 3' in the SUB-Header. |You have to use a temporary way over a |temporary String: ---------------------------------+--------------------------------------- It would be idle to write a converter for the Constants-Conversion, because this would be the main part when converting big projects. At the same time you can of course do the stuff with the COMMON SHAREDs and the DIM SHAREDs and of course with the META-Statements, as well as SSEG/SADD/SSEGADD. When interrupt calls are made with a CALL INTERRUPT or CALL INTERRUPTX, then you can rebuild the Routine 'INTERRUPTX' in the InLine-Assembler and then convert all calls of 'INTERRUPT' to 'INTERRUPTX' or directly do it in the InLine-Assembler or you can use the PowerBASIC 'CALL INTERRUPT'- Routine, where you will have to convert all register statements... ================================================ 9. Available Shareware & Public Domain Solutions ================================================ There are many more Toolboxes, but I just want to present you a few of the most important. 9.1. PBSOUND for PowerBASIC 3.0/3.2 9.2. HiVGA for PowerBASIC 2.1/3.2 9.3. PBVISION/PRO for PowerBASIC 3.x 9.4. PBCompress for PowerBASIC 3.1 9.5. Personal Protocol/Communication Library for PowerBASIC 9.6. POW! - Sound Blaster Toolkit 9.7. PBGUI Toolkit for PowerBASIC 3.0 9.8. PBWizard 9.9. SVGA for PowerBASIC 9.10. MAXLIB for PowerBASIC v1.2 9.11. DWDOOR for PowerBASIC 3.x 9.12. Special-Power / Spezialtools for PowerBASIC 2.1/3.0 9.13. BWSB - Bells, Whistles and Sound Boards 9.14. Public Domain Sourcen from german programmers 9.15. Public Domain Sourcen welche oft benötigt werden 9.1. PBSOUND for PowerBASIC 3.0/3.2 ----------------------------------- Language: German / English Author : Thomas Gohel| Version : v1.90 Price : 40,-DM/80,-DM / / (privat/commercial) Supply : PowerBASIC filearea: PBSOUND Fido-Request with Magic 'PBSOUND' at 2:2410/330 (33.6 & ISDN) InterNet: http://www.snafu.de/~pbsound/ File : PBSOUND.ZIP (v1.80) The recommended Operatingsystem for PBSOUND for PowerBASIC is MS-DOS in the Versions 5.0, 6.x, 7.0 or MS-Windows 95. Features: - support all Creative Labs Sound Blaster models, SB16 and SB32AWE incl. Upgradeboards such as WaveBlaster I+II and Roland SoundCanvas SCD10/15 - supports the internal PC-Speaker - playback from MIDI- and VOC-Files in the background and within the IDE - no size limits with VOC-files - playback/recording up to 44100, Stereo and 16bit with a SB16 or SB32AWE - support the SBPro/SB16 mixers - Speechsynthesis with SBTALKER.EXE - Online-Help for the PowerBASIC-IDE - PBPLAY, MIDI/VOC-player tool - PBREC, VOC-recording tool - PBSPEAK, VOC/WAV player for speaker - PBW2V, VOCWAV conversion program - with PBSOUND-library & EXE conception! - You can now create executable PowerBASIC files up to 4GigaByte with PBSOUND! - demo & introductoryprogram - complete with INSTALL & SETUP-Program - with source: to programming the CT-VOICE.DRV & the SBPro mixerchip 9.2. HiVGA for PowerBASIC 2.1/3.2 --------------------------------- Language: German / English Author : Matthaeus Stadler Version : v2.0 Price : 40,-DM Supply : PowerBASIC filearea: Toolkits (Deutschland) Fido-Request with Magic 'PBHIVGA' at 2:2410/330 (33.6 & ISDN) InterNet: http://www.snafu.de/~pbsound/ File : HIVGA20B.ZIP Features: - fast graphic routines for standard VGA, SVGA and VESA 256-, 32k and 65k colors, automatic VGA Adapter recognition. - basic graphic routines, splitscreen, scrolling, floodfill, GetImg, SetImg, sprite routines, bitmap scaling. - loads and saves PCX-, Targa-, HVS-files. - linking of bitmaps to the program .exe file. - mouse routines for all modes, scalable text, fading, color- cycling, color definition. - up to 4 pages in 320*200, several pages up to 1600*1200. - including user defined fonts (until 16x32) - possible usage of free VGA memory for graphics. - no functional restrictions in shareware version. - demo program with sourcecode included.| 9.3. PB/VISION PRO for PowerBASIC 3.x| -------------------------------------| Language: English| Author : Daniel P. Stasinski (published by PowerBASIC, Inc.)| Version : 2.1| Price : .00| Supply : http://www.powerbasic.com/files/pub/visndemo.zip| Contents:| - Create SAA-Interfaces with all that is needed| - with Workshop to create Interfaces| - PC-Tools/Norton Utilities Look possible 9.4. PBCompress for PowerBASIC 3.1 ----------------------------------- Language: English Author : Greg Turgeon Version : V1.1 Price : .00/.00 (without or with Sourcecode) Supply : PowerBASIC filearea: Toolkits (allgemein) File : PBCOMP.ZIP Contents: - Filecompression and Decompressionutility - Statusbar - compresses to the space MS Compress does - quite fast 9.5. Personal Protocol/Communication Library for PowerBASIC ------------------------------------------------------------ Language: English Author : MarshallSoft Computing Version : V4.3 (Communication) V1.0 (Protocol) Price : (Communication / (Protocol) Supply : PowerBASIC filearea: DFUE, BBS and FidoNET some BBSes/Filenets (BasNet) in Germany File : PCL4PB43.ZIP PPL4PB10.ZIP Contents: a) Personal Protocol Library V1.0 for PowerBASIC: - XMODEM, XMODEM-CRC, XMODEM-1K, YMODEM, YMODEM-G and ZMODEM protocols. b) Personal Comm Library V4.3 for PowerBASIC: - COM1-COM20, 115.200 Baud, 4 to 20 Ports, 16550 UARTs, and much more. 9.6. POW! - Sound Blaster Toolkit ---------------------------------- Language: English Author : Tim Gerchmez Version : V1.0 Price : .95 Supply : PowerBASIC filearea: Sound Blaster ftp.eskimo.com/u/f/future (Tim's Homepage) File : POW!1_0.ZIP Contents: - Replay of 8bit Samples using DMA - CMF-Replay using SBFMDRV.COM - Speechreplay using SBTALKER.EXE - POW-Library Concept for Samples 9.7. PBGUI Toolkit for PowerBASIC 3.0 -------------------------------------- no longer available 9.8. PBWizard -------------- Language: English Author : Thomas G. Hanlin Version : V2.1 Price : .95 (no Shareware-Version) Supply : PowerBASIC filearea: Toolkits (allgemein) File : PBWIZ21.ZIP Contents: - Many additional functions - replacements of some PowerBASIC-Routines - Sound Blaster using SBSIM (TSR-Driver needed) - XMS/EMS Support - CRC16 - and more and more and more... 9.9. SVGA for PowerBASIC ------------------------- Language: English Author : Stephen L. Balkum and Daniel A. Sill (Zephyr Software) Version : V2.4 Price : .00 Supply : PowerBASIC filearea: Grafik (allgemein) http://www.zephyrsoftware.com File : SVGAPB24.ZIP Contents: - Usage of nearly all VGA/SVGA-Modes - very good in all Modes (really reccomended!) - Loading of PCX-Files (GIF in older Versions) - many useful Graphicroutines - Sprites and much more 9.10. MAXLIB for PowerBASIC v1.2 -------------------------------- Language: English Author : Brian McLaughlin| Info : no longer supported and removed from the market! File : MAX12A.ZIP Contents: - Usage of EMS/XMS to save Array's - I/O-Functions 9.11. DWDOOR for PowerBASIC 3.x ------------------------------- Language: English Author : James R. Davis Version : V3.1 Price : .00/.00 (with printed manual) Supply : PowerBASIC filearea: DFUE, BBS and FidoNet File : DWDOOR31.ZIP Contents: - writing DOORS for BBS-Systems - supports PCBoard, RBBS, QBBS, GAP, Widcat v2+3, WWIV, SPITFIRE, Ultra BBS and others... - Full ANSI and FOSSIL-Support 9.12. Special-Power / Special tools for PowerBASIC 2.1/3.0 ---------------------------------------------------------- Language: German / English Author : Stefan Machwirth Version : v1.10 Price : $ 36.- (38,- DM within Europe) Supply : Mailboxes, The german Basic Network (BasNet) PowerBASIC Filearea: Toolkits (Deutschland) InterNet: http://www.snafu.de/~pbsound/ File : SPPOWENG.ZIP Features: * DDESWAP 2.1: - extended SHELL-command; reduces the need of memory of a program to 1.4 kB while running other EXEs - returns errorlevel - supports recursive starts of EXEs - DDE-functions for data-exchange between DOS-programs - configuration either with TSR-usage or as runtime-version * DLZV 1.1: - data-compression with high-level interface for your sources * CRYPT 1.0: - password-protection with an one-way-method - encodes strings and whole files - no need for debug-protection - not to crack except with very special brute-force-methods * BASXREF 1.32: - free crossreference-tool to check your sources * MERGE-N-SORT 1.01: - high-end sorting-tool with source - assorts fixed-length (random-) files and textfiles - assorting by several fields in ascending or descending order 9.13. BWSB - Bells, Whistles and Sound Boards --------------------------------------------- Language: English Author : Edward T. Schlunder Version : 1.20 Price : / (normal/with ASM Sourcecode) Supply : PowerBASIC filearea: Sound Blaster Internet: http://earthvision.asu.edu/~edward/ File : BWSB120A.ZIP BWSB120B.ZIP Contents: - Moduleplayer (S3M, MOD, 669, ULT, MED, FAR STM) for PowerBASIC - Suppots GUS, Sb1.x, SB2.x, SBPRO, SB16 & PAS - All routines in 386-Code (OBJ-Files) - also usable by QB, PDS, TP, C, C++ and ASM 9.14. Public Domain Sources from German Programmers --------------------------------------------------- These Routines were already published over Computernets and can principally be ordered or downloaded OnLine from the 'PowerBASIC- Filearea: Sourcen'. A complete List can be ordered using the Magic 'PBFILES' (Please remind the Requesttimes!) Here is a little selection of often needed Sources. CrossPoint-Users can request with 'M' and 'F3' immediately : Name: Description: ANSI.BAS - ANSI-Detect BLOAD.BAS - BLOAD/BSAVE Demonstration CHKFILE.BAS - Check if File exists COPPER.BAS - Copper Demo (Source for BasNet-Intro) DATUM.BAS - Get current Day of Week DIR.BAS - Advanced Directory Functions (incl. Time etc.) DIR32.BAS - Advanced Directory Functions for PowerBASIC 3.2 (with Pointers) DIR95.BAS - Advanced Directory Routines for Windows 95 DISKFREE.BAS - Find size of Hard Disk DOS-SYS.BAS - Detect all installed drives DOSXMLIB.ZIP - XMS/Disk Routines ENV.BAS - Change Environment (pass Error 7) FILECOPY.BAS - Filecopy (via Inline-Assembler) with File- and Timestamps FIRE.BAS - Fire (Firesimulation) LADEFONT.BAS - 15 special ASCII charcter in textmode LUPE.BAS - Magnification Glass Demonstration PBCPU.BAS - CPU-Detection in 'true' PowerBASIC (8088-Pentium Pro) PBCRC32.ZIP - High speed CRC32 Routines PBSHELL.BAS - Alternative SHELL-Command (with ERROR-Level) PBSOUND.ZIP - Programming of the CT-VOICE.DRV PBSOUND.ZIP - Programming of the SBPro Mixer PBUNIX.ZIP - Calculation of UNIX-Time PFAD.BAS - Get path in which the called program is located PSL-FLI.ZIP - FLI-Player Extension for PBSOUND Librarys SCROLL.BAS - Scrolling of the screen (VGA-BIOS) SETDATE.BAS - Modify date and time of files STARWARS.BAS - A Scroller in Star Wars Look TEXTMAP.BAS - Texture mapping in PowerBASIC TEXTMAUS.BAS - Change the Mouse cursor in textmode TIMEDATE.BAS - Routines for date and time processing UHR-TSR.BAS - TSR-clock using Timerinterrupt &h1C WINTOOLS.BAS - Check if program runs under Windows, Timeslice WOCHE.BAS - Weekdayroutines XMAS.ZIP - DMA-Channel programming (8bit), here in form of a Christmaspresent 9.15. Public Domain Sources which are needed often -------------------------------------------------- There is often a request for the same sources in the Programmerechos. Here is a little Hitlist of international sources: Name: Description: BARCODE*.BAS - Routines for Barcodes CMDPARSE.BAS - Check Commandline or Environ$ DBASE.BAS - dBASE-Routines EDIT$U.ZIP - String-Editor Routine EDITBOX$.BAS - String-Editor Routine EDITOR.BAS - String-Editor Routine GIF-LOAD.BAS - Loading GIF-Pictures LANSI_31.BAS - Routines to display ANSI-Pictures NET41.ZIP - Create Fido-Netmails PARSECMD.BAS - Check Commandline or Environ$ PB3-DBF.BAS - dBASE III Interface PBFOSSIL.ZIP - Unit to steer a Fossildriver PBGIF.ZIP - Loading and converting a 320*200*256 GIF-Picture in the BSAVE format PBLANT.BAS - LANTastic Function Calls PBNET.BAS - Networkfunctions for INT &h21, Function &h5F PCX320.ZIP - PCX-Loaderroutine for 320*200 & 256 Colors PCXVGA.BAS - PCX-Loaderroutine for 640*480 & 16 Colors ============================== 10. The people from PowerBASIC ============================== Of course every Programming Language has brought up special people, which are known in the public for special work or tools. 10.1. USA - United States of America 10.2. BRD - Germany, german speaking area 10.3. Fido/InterNet - The people from PowerBASIC 10.1. USA - United States of America ------------------------------------ Of course the two most known PowerBASICers of all: Bob Zale - actually developed PowerBASIC and calls it his Lifetime work. bob@powerbasic.com (Bob Zale) Also quite known in the United States are: Dave Navarro - earlier at PowerBASIC Inc., and now known for his "www.basicguru.com" project James C. Fuller - PBGUI Daniel Stasinski - PB/Vision (graphical SAA-Interfaces) Tom G. Hanlin - PB Wizard (loads of additional Functions) Tim Gerchmez - POW! (Sound Blaster Routines) Greg Turgeon - PBCompress (Compressor/Decompressor Unit and some PD-Sources) Stephen L. Balkum - SVGA for PowerBASIC (Zephyr Software) Daniel A. Sill - SVGA for PowerBASIC (Zephyr Software) 10.2. BRD - Germany, german speaking area ----------------------------------------- Some people have become known for special things, especially at Kirschbaum: Patrick Biercher - PowerGRAPH Dirk Hilger - PowerTOOLS Thomas Reichardt - PowerISAM Further on there are some people on the PD and Shareware-Market which are quite known for their Tools: Thomas Gohel - PBSOUND Matthaues Stadler - HiVGA 10.3. Fido/InterNet - The people from PowerBASIC ------------------------------------------------ Without the many messages or ideas this FAQ would not by far be what it is today. This is why I would like to use the occasion to thank some people personally: Thomas Gohel - Author of PBSOUND for PowerBASIC, Author of this PowerBASIC-FAQ and many other things... And I seem to be responsible for the PowerBASIC- Support here... ;) Andras Hoeffken - Measuringinstrumentsteering in PowerBASIC - Chapter 'C++ and PowerBASIC' Stephan Guenther - graphical conversion of all pictures with Highlight Professional V1.0 for "Windows New Technology" - incl. all rendered Graphics and Animations for PBSOUND Thomas Geiger - english Version of this FAQ - for some tips for this FAQ Mark Junker - Chapter 'Converting PDS to PB' - for some tips for this FAQ Wolfgang Bruske - english Version of the Chapter 'Pointer'| Dave Navarro - for his comments to this FAQ Bernd Richter - for the correctness of quite some information Peter Cooper - for the grammatical correctness of the english Version Marc van den Dikkenberg - for some tips for this FAQ Roland Arendes - for some tips for this FAQ Roland Osen - dito Wolfram Sang - dito Dr.P.Jennewein - dito Martin Kiewitz - dito Alexander Podkolzin - dito============================================================================= InterNet: http://www.gohel.de Email: pbfaq@gohel.de Fax: +49-30-47300910 BBS, Line 1: +49-30-47300910 (24h, 8N1, X75, V.42b, CCB, 64000/128000bps) Line 2: +49-30-47300910 (24h, 8N1, V.42b, V.FC, V.34, 9600-33600bps)----------------------------------------------------------------------------- - End of the offical PowerBASIC.GER-FAQ (c) Thomas Gohel, all rights reserved=============================================================================
09-29 Following jobs posted at http://anykindjob.com All services are free for employers and job seekers.
http://anykindjob.com offers completely free services for employers andjob seekers. Global one-stop help-wanted site with advanced job andresume search functions. The followings are some of the latest jobposts. Details of job contact info are at http://anykindjob.comDetails about Job ID# 1658Position: Electrical engineer, substation designJob category: EngineeringTarget:Salary: tbd / Will-DiscuDescription: North Carolina company seeking electrical engineer,substation design, for full time opportunity! Successful candidatewill: Prepare main one line and station auxiliary one line diagramsDevelop project design criteria, substation/switchyard generalarrangement, layout, and elevation drawings Develop grounding drawingsPerform cable ampacity, grounding, lightning, illumination, and stationauxiliary load calculations Perform trench and conduit design Requires:BS in Electrical Engineering. Professional Engineering Licensepreferred, MSEE a plus. Minimum seven years of experience in electricaldesign for high voltage and distribution substations for utility andindustrial customers. Knowledge of MS tools, AutoCAD, and otherdiscipline software products, understanding of ANSI standards, IECstandards and knowledge a plus. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/V/F/DLocal Address or City: WendellJob State/Province: North CarolinaJob Country: United StatesJob Zipcode/Postcode: 27591Details about Job ID# 1657Position: P3 SchedulerJob category: EngineeringTarget:Salary: tbd / Will-DiscuDescription: Headway Corporate Resources currently seeking experiencedP3 scheduler for opportunity in power plant environment! Successfulcandidate will work at multiple locations all over the United States,but maintain current home base. Four years required experience in powerplan environment, working knowledge of Primavera 5.0. Direct hire,competitive salary, reimbursed per diem and expenses. How toapply/contact information: To be considered for this position, registerwith Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCEN@headwaycorp.com. View all of our jobs online atHeadwaycorp.com. EEO/AA/M/F/V/DLocal Address or City: Home locationJob State/Province:Job Country: United StatesJob Zipcode/Postcode: 66214Details about Job ID# 1653Position: EN-640 Software Test Engineer - Contract - Gaithersburg, MD(Local CandidatesJob category: Computers, SoftwareTarget: Mid Career (2+ years of experience)Salary: BOE / HourlyDescription: EN-640 Software Test Engineer - Contract - Gaithersburg,MD (Local Candidates Only) Location: Gaithersburg, MD Length: 6 monthsRate: BOE A company that develops and manufactures biotech diagnostickits needs a Software Test Engineer. You will be responsible fortesting the software that drives medical diagnostic devices. You willbe responsible for performing and approving software verification andvalidation activities under an FDA compliant product developmentprocess. You will: o. Assist in the design, development and testingprocesses for legacy and new applications o. Analyze and derive productand software requirements in a cross-functional team o. Establish anautomated test environment and incorporate testing within the softwaretest process o. Work with modern software testing life cycle methods inthe regulated space o. Develop test plans, protocols and results forsoftware verification and validation of product software eitherdeveloped in-house or in collaboration with outsourced vendors o.Develop acceptance, module and system test plans for product softwarereleases o. Demonstrate regulatory compliance for all non-productsoftware used in the development, verification and validation ofproduct software Requirements: o. 8+ years experience with testinghardware-software products under Windows (multiple versions) (Required)o. Experience with software debugging tools (Required) o. Experiencewith XML and other hierarchical formats (Required) o. Experience withrelational databases (SQL Server, Oracle) (Required) o. Experience withscripting languages (Python, Perl, Ruby) (Required) o. Experience withUnit Testing Tools (such as JUnit, CppUnit, NUnit) (Required) o.Experience with Automated Testing Tools (such as QuickTest Pro,WinRunner) (Required) o. Experience with Requirements Management Tools(such as RequisitePro, DOORS) a plus o. Familiarity with development inthe medical diagnostic industry (or regulated space) is a plus o.Experience in the use of analysis capture tools (such as LabView,Matlab) is a plus o. Experience with object-oriented programming (C++,C#, Java) a plus o. Ability to develop and use scripting languages(Python, Perl, Ruby) is a plus o. Understands networking technologies(TCP/IP, UDP) is a plus o. Experience testing products under RTOS aplus o. Experience as a Software Test Lead is a plus o. BS degree inComputer Science, Mathematics, Biomedical or Electrical Engineering(Required) Notes: o. Local Candidates Only o. US citizens or greencardholders only. o. Please specify your bill rate when applying andwhether this is 1099 or W2 For quick consideration Click here to applyLocal Address or City: Gaithersburg, MDJob State/Province: MarylandDetails about Job ID# 1652Position: REMEDY DeveloperJob category: Computers, SoftwareTarget: Mid Career (2+ years of experience)Salary: to 85k base plus / YearlyDescription: Our client a large software house, has been successful inwinning new business. Work on the team to implement REMEDY and the ITILprocess for a new client. Great co, expanding rapidly, lots of room forpersonal and professional growth. Relaxed, informal, "un-stuffy"environment. Location Toronto Perm fulltime, to 85k base pluspackage depending on experience. ============= Preferred skills includeany or all of: - REMEDY Action Request System - REMEDY Asset Management- REMEDY Change Management - REMEDY Help Desk. Start date ASAP. Forconsideration, please send resume to jpapish (at) spectrumjobs.com Weabide by PIPEDA and your personal information is not used withoutdisclosure. Thank you.Local Address or City: TorontoJob State/Province: OhioJob Country: CanadaJob Zipcode/Postcode: M2NDetails about Job ID# 1651Position: Branch Manager for Mortgage CompanyJob category: Finance/EconomicsTarget: Management (Manager/Director of Staff)Salary: ,000-,000 / YearlyDescription: Position: Branch Manager DOT: 186.167-086 Industry:Financial Reports To: Chief Executive Officer FLSA Status: ExemptSupervises: Assistant Branch Manager, Administrative Assistant, LoanOfficers and Account Executive Responsibilities: · Oversees branchoperations to ensure corporate culture, values, policies, procedures,and practices are implemented and administered. · Responsible forestablishing and maintaining an efficient and high productive salesforce that will continue to increase Guidance Financial Corporation'smarket share in a particular territory. · Continuously motivates teamby leading by example, setting standards, recognizing those high andlow producers, team building and being enthusiastic, energetic, andoptimistic. · Establishes procedures for custody and control ofcompany assets, including but not limited to equipment, office area,software programs, company and client information, company proprietaryinformation, trade secrets, etc. to ensure safekeeping andconfidentiality. · Maintains a timely communication line between thebranch and corporate office. · Ensures that the Customer ServiceReport (CSR) and daily reports are received by corporate, before noonof the next business day, to confirm all set appointments. · Preparesand conducts employee performance reviews, employee development actionplans, and other employee reviews on a monthly and/or quarterly basis.· Implements disciplinary actions, such as verbal warnings andwritten notices, to those loan officers and other employees who are notcomplying with company policies, procedures and practices. ·Responsible for the petty cash replenishment monthly. Ensures allreceipts and log are submitted in a timely manner. · Identifiessolutions and strategies to overcome any problems that may ariseaffecting branch, such problems may include, but not limited toemployee relations, employee performance and productivity, customercomplaints, and external third parties complaints. · Contactscustomers, business, and community to promote goodwill and generate newbusiness. · May assist loan officer(s) and account executives with avariety of responsibilities, such as substituting for the loan officeror account executive to meet with client(s) and contact client(s) forany documentation and/or information needed to complete loanprocessing. · May meet with client(s) to build rapport and clientrelationship. Provides client(s) with exceptional customer service.Identifies and analyzes client(s) needs to find the best product forhim/her/them. · May be responsible for administering some humanresources responsibilities, such as recruiting, hiring, dismissing, andtraining of loan officers and account executives. · Promotes aprofessional and positive work environment. · Additionalresponsibilities may be assigned. Qualifications: · Leadership andmanagement skills · Excellent verbal and written communication skills· Excellent customer service skills · Strong organizational skills· Ability to follow-up · Ability to problem solve · Ability tomulti-task · Detail oriented · Motivated, enthusiastic, energetic,aggressive and sales driven · Computer proficient with a variety ofMicrosoft software, such as MS Word, MS Excel, MS Outlook and MSPowerPoint · Ability to type at least 40 WPM · Bachelor's Degree· Management experience · Knowledge of the mortgage industry,preferred · Possesses professionalism · Positive attitude LastRevised:9/26/2006Local Address or City: 5800 South Eastern Ave, Ste. 200, CommerceJob State/Province: CaliforniaJob Country: United StatesJob Zipcode/Postcode: 90040Details about Job ID# 1650Position: Store ManagerJob category: Retail/WholesaleTarget:Salary: TBD / Will-DiscuDescription: Focus On Your Career! Headway Corporate Resources seekingexperienced seasonal (Oct - Jan 31) Store Manager in Dickinson NorthDakota. Successful candidate will be responsible for: hiring, trainingand managing staff, daily deposits, weekly reports, promotional signageand marketing, customer service. Earn a 3-4%% commission of total salesalong with a 0-400 weekly salary. Position requires: At Least OneYear Retail Experience Management Experience Strongly PreferredExceptional Customer Service and Training Skills Mathematical AbilityBasic Computer Skills Strong Problem Solving and Decision Making SkillsSolid Professional Judgment Weekly salary plus bonus. How toapply/contact information: To be considered for this position, registerwith Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCAdmin@Headwaycorp.com . Use position reference code numberAKJ124. About Us Headway Corporate Resources is a regional marketleader in the delivery of diversified, high quality employmentservices. We offer a complete range of employment opportunities:temporary, temporary-to-hire, direct-hire and contract. Headwayspecializes in placements for professionals in accounting and finance,legal/medical, mortgage/insurance, professional/technical, andengineering. Headway brings top-flight companies and outstandingprofessionals together. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/F/V/DLocal Address or City: DickinsonJob State/Province: North DakotaJob Country: United StatesJob Zipcode/Postcode: 58601Details about Job ID# 1631Position: EN-639 User Interface Designer - Staff - Santa Clara (LocalCandidates Only)Job category: Arts, Entertainment, and MediaTarget: Entry Level (less than 2 years of experience)Salary: BOE + stock options / Will-DiscuDescription: EN-639 User Interface Designer - Staff - Santa Clara(Local Candidates Only) Salary: BOE + stock options A Web Applicationscompany is looking for a User Interface Designer to contribute to thenext revolution of a world-class web-based application that's used bythousands of users around the world. In this role you should: o. Beable to demonstrate top-notch user interface design skills,user-centered design processes, update functional specifications basedupon designs and have a strong portfolio of design projects. o. Showprevious work that demonstrates an understanding of the user-centereddesign and able to prepare low-fidelity models to demonstrate conceptviability. o. Be detail-oriented and able to juggle multipleassignments at one time and have strong communication and organizationskills. As a User Interface Designer you will: o. Translate userrequirements into highly-usable Web applications. o. Work with projectmanagers and engineers to design, test, and validate design concepts.o. Turn abstract requirements and use case documentation into concretedesign specifications o. Coordinate internal or external usabilitytesting as needed to validate designs. Requirements: o. 5 yearsexperience designing web-based software applications (Required) o.Understanding of the benefits, constraints, and issues involvingtechnologies such as AJAX, HTML, CSS, JavaScript, and DHTML (Required)o. Proficiency with HTML or Flash prototyping tools (Required) o.Experience with PhotoShop, Illustrator, PowerPoint, Adobe Acrobat,Microsoft Word, and Flash (Required) o. Degree in User InterfaceDesign, Human Computer Interaction (HCI), Interaction Design, orequivalent work experience o. Visual design and illustration skills area plus Notes: o. Authorized US workers only o. Local candidates only o.No telecommuting available (sorry, we asked) o. Please specify yourcurrent salary when applying o. Questions? Call us at 888-378-2333 x 4For quick consideration Click here to applyLocal Address or City: Santa Clara , CAJob State/Province: CaliforniaJob Country:Details about Job ID# 1630Position: Store ManagerJob category: Retail/WholesaleTarget:Salary: TBD / Will-DiscuDescription: Focus On Your Career! Headway Corporate Resources seekingexperienced seasonal (Oct 1. - Jan 31) Store Manager in North BendWashington. Successful candidate will be responsible for: hiring,training and managing staff, daily deposits, weekly reports,promotional signage and marketing, customer service. Earn a 3-4%%commission of total sales along with a 0-400 weekly salary. Positionrequires: At Least One Year Retail Experience Management ExperienceStrongly Preferred Exceptional Customer Service and Training SkillsMathematical Ability Basic Computer Skills Strong Problem Solving andDecision Making Skills Solid Professional Judgment Weekly salary plusbonus. How to apply/contact information: To be considered for thisposition, register with Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCAdmin@Headwaycorp.com . Use position reference code numberAKJ110. About Us Headway Corporate Resources is a regional marketleader in the delivery of diversified, high quality employmentservices. We offer a complete range of employment opportunities:temporary, temporary-to-hire, direct-hire and contract. Headwayspecializes in placements for professionals in accounting and finance,legal/medical, mortgage/insurance, professional/technical, andengineering. Headway brings top-flight companies and outstandingprofessionals together. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/F/V/DLocal Address or City: North BendJob State/Province: WashingtonJob Country: United StatesJob Zipcode/Postcode: 98045Details about Job ID# 1600Position: TW-917 Sr Technical Writer - Staff - San Jose, CA (LocalCandidates Only)Job category: Information TechnologyTarget: Management (Manager/Director of Staff)Salary: BOE / Will-DiscuDescription: TW-917 Sr Technical Writer - Staff - San Jose, CA (LocalCandidates Only) Salary: BOE A biotech firm in San Jose is looking fora senior technical writer to plan, develop, and maintain documentationsuites for biomedical lab instrumentation and software, includinghardware and software user guides, quick reference guides and onlinedocumentation. You will: o. Create documentation using hands-onexperience with products, develop documentation plans, manage technicalreview cycles and interact effectively as part of cross-functionalprogram teams. o. Lead multi-writer projects and mentor other writersas needed. Requirements: o. 2 years experience documenting medicalhardware/instrumentation and it's related software (Required) o.Proficiency with FrameMaker (Required) o. Experience developing onlinehelp with RoboHelp or other authoring tools (Required) o. Previousexperience working in a medical laboratory or FDA environment is amajor plus o. Experience with Webworks and Acrobat is a plus o. Workingknowledge of documentation localization is a plus o. BA/BS degree in alife/physical science, English, Technical Communications or abackground in Science o. Please specify your current compensation whenapplying Notes: o. Telecommuting allowed one day a week. o. US citizensor greencard holders only. o. Local candidates only. o. Questions? Callus at 888-378-2333 x 4 o. Please specify your current compensation whenapplying. For quick consideration Click here to applyLocal Address or City: San Jose, CAJob State/Province: CaliforniaDetails about Job ID# 1580Position: sales associateJob category: Retail Retail/WholesaleTarget:Salary: based upon position / HourlyDescription: The Toy Connection is a specialty toy store that pridesitself in having a knowledgeable staff and a product assortment 2nd tonone. If you're ready to get busy and make a difference, this might bethe lplace for you. No nights( only during the holidays until 7:00pm)No Sundays. Growth potential availableLocal Address or City: 1111 HAlf Day Road, BAnnockburnJob State/Province: IllinoisJob Country: United StatesJob Zipcode/Postcode: 60015Details about Job ID# 1587Position: EN-636 Database Sales Engineer - Staff - San Francisco, CAJob category: SalesTarget: Mid Career (2+ years of experience)Salary: BOE / HourlyDescription: EN-636 Database Sales Engineer - Staff - San Francisco,CA Salary: BOE A leading developer of Transactional Data Management(TDM) solutions is looking for an experienced systems engineer tosupport their sales representatives in the Bay Area and PacificNorthwest. In this role, you will be responsible for providing pre-saleand post sales technical support to the sales team. You will alsofunction as a technical resource for the customer and for lessexperienced Systems Engineers and consultants. In a pre-sales supportrole, you will: o. Prepare and deliver demonstrations and presentationsof most products and answers basic technical questions about them withminimal outside assistance. o. Provide technical support to the salesrepresentatives. o. Assist customers during product evaluation byinstalling software, providing product training when necessary,answering technical questions, managing and executing productbenchmarks and proof-of-concepts, and developing an account supportstrategy. o. Interface with the customer's technical team, gatheringinsight and information that will be useful in developing a salesstrategy for the account. In a post-sales support role, you will: o.Ensure each customer's ongoing technical satisfaction with the companyand its products. o. Transition the customer to post-sales supportchannels. Requirements: o. 3+ years experience as a sales engineer(Required) o. 5+ years of experience in database and/or datareplication technologies. Must have a good working knowledge ofdatabase systems, concepts, and architectures. (Absolutely Required) o.Prior experience as a DBA is a plus. Knowledge of EAI, ETL, and EIItechnologies is a major plus. o. Must be willing to travel. Average 50%%travel to support sales representatives in the SF Bay Area and PacificNorthwest. (Required) o. Bachelors degree in Computer Science or othertechnical discipline. Notes: o. The company is close to BART. o. Asenior (lead) role is also open. o. Authorized US workers only. o.Questions? Call us at 888-378-2333 For quick consideration Click hereto applyLocal Address or City: San Francisco, CAJob State/Province: CaliforniaDetails about Job ID# 1106Position: QA Lead (Perm), MississaugaJob category: Computers, SoftwareTarget:Salary: 1 / YearlyDescription: QA Lead (Perm), Mississauga Our client a Christiancharity, is looking for a QA Leader. Your Christian religion should bevery important to you as it is the business of the company. Pleasecomment on that in your cover email. The Software Development Group isresponsible for the development, enhancement, implementation andsupport of all software applications on the Intel platform. Theyinclude web applications, CRM for the Call Centre, Raiser's Edge, aphoto imaging system, a correspondence system and a number of reportingsystems. Many of these applications are mission-critical and areintegrated with our donor systems on the iSeries. Responsibilities:Reports to Manager, Software Development, Creates clear, concise,detail oriented test plans based on functional requirements. Executesdifferent kinds of testing (i.e., SIT, data-mapping,performance/load/stress) to support new and existing functions ofapplications. Engages early in Project Life Cycle with ProjectManagement to assess and determine high-level testing Level-Of-Effort(scope, approach, timing, duration, resources, etc.) Works with CIT(Change Implementation Team) to conduct UAT. Coordinates testingschedules with different groups (i.e., vendor, internal and externalgroups). Provides QA status and defect tracking reports to project teamand manager(s). Liaises with development team, project management andbusiness owners for testing and QA related functions. Performsproduction verification after code implementation. Administers andMaintains bug tracking system. Ensures the integrity of test materialby establishing and maintaining procedures and guidelines for updatingand archiving of regression tests. Develops test procedures and assistsprojects in developing Quality Plans and Test Plans, Providesdirection, training, and supervision for junior staff. Requirements:Minimum 5 years of QA analyst experience, a university degree.Proficient in bug tracking and stress testing tools, MS Office, MSVisio, MS Project, White box testing experience, Knowledge of testingconcepts and methodologies, Experience in writing test plans, testdesigns, and executing test cases, Understanding of behaviours ofdifferent browser types, Basic understanding of operating systems andPC hardware. Nice to have: CASE tools, Knowledge of HTML, XML, databasesuch as SQL Server, IBM DB2, Scripting languages, such as JavaScript,HTML, XML, Project Management and team leadership experience.----------------------------- To send a resume: Our preferred resumeformat is in the link below. To avoid delays, please read it carefullyand comply with our format. We know what our clients want to see in aresume. Please email a Word doc chronological resume (where youraccomplishments are listed under the company where you did them ratherthan separately), to heenan@rogers.com Out of respect for our clients'time, resumes should be no longer than 2-3 pages. Please name your Worddoc Lastname, Firstname.doc (Smith, John.doc). Please do NOT send acover letter, all relevant information should be in your resume. Youmay put salary, desired location, permanent or contract, etc. in abrief email note. Please do not put any information in a cover notethat is already in your resume. Your address and contact informationshould be at the top of the first page. Education, technical skills andcertifications should be near the top of the resume. You may sendreferences now or later, as you wish. Your Work History should be asfollows: Please put the city (and country, if outside Canada) and *URL*beside every company name on your resume. And, very important, one linesaying what kind of business it is, so we don't have to research it.Also, tell us who you reported to (their position). As a service to ourclients, we do not forward any resume to our clients without thefollowing information completed. (Self-employed or consultants shouldlist their work history in exactly the same way, please do not justwrite "self-employed" without giving details): For example:-------------------- January 2001 - March 2003 ABC Company (Toronto)www.abc.com Programmer(Contract/Permanent/Coop/Volunteer/Part-Time/Full-time) ABC company isa company that develops software for the insurance industry. Reportedto the Information Technology Manager. ----------------------------- Areminder not to use boxes, tables or logos in your Word doc, theybecome garbled when scanned so we cannot read them, which puts you at adisadvantage. Please note that one of our recruiters will contact youonly after an acceptable resume has been received, and only when thereis a suitable position to discuss. Resumes are held in strictestconfidence, all submissions to clients will be discussed with youfirst. Heenan Independent Recruiters Toronto, Canada heenan@rogers.comPreferred resume format: www.pixelsmith.net/RB.doc Coming soon, our newpublication: "A Guide to Finding a Job in Canada" Please email fordetails. ----------------------------Local Address or City: TorontoJob State/Province: OntarioDetails about Job ID# 1105Position: Director of Manufacturing - plant manager, medical device,FDA, GMPJob category: Management Manufacturing and ProductionTarget: Management (Manager/Director of Staff)Salary: 82,000 - 115,000 / YearlyDescription: A progressive, growing division of a publicly tradedmedical components company is searching for a Director ofManufacturing. This position is open due to the promotion of a valuedemployee. This Plant Manager will be responsible for plant operationswithin a continuous improvement environment. Knowledge of scheduling,quality, material and continuous improvement systems is a must. Pastexperience working in a FDA / GMP environment is strongly preferred.Interested candidates should have a four year degree and either 5 yearsof engineering or operations management within a manufacturing ormachining environment. Candidates must have a strong work history orreal continues improvements and completed major projects to stream linethe manufacturing operation. Lean Manufacturing, Six Sigma or Kaizen,and project experience is strongly desired. Past experience managinglarge budgets, capital projects, product cost, profit and loss is amust. Our client has plants throughout the world and offers outstandingopportunities for career advancement. They are searching for promotableleaders with a progressive "can do" attitude. This facilityproduces precision machined bone screws, medical implants, orthopedicdevices and surgical instruments. We would prefer candidates with astrong manufacturing / machining background. Our client has grown bysales and acquisition of several growing medical suppliers. This is thetype of company everyone wants to work for, due to their progressiveenvironment. MUST HAVE: a four year degree, lean manufacturing or SixSigma experience, leadership skills, operations and a strong technicalmanufacturing and or precision machining background. Six Sigma BlackBelts are preferred. FDA, GMP and/or direct medical experience is alsostrongly desired. Keywords relating to position: medical, medicaldevices, medical device, implant, implants, bones screws, bone screws,bone screw, orthopedic, surgical instruments, medical supplier, FDA,GMP, Lean Manufacturing Six Sigma Green Belt, Six Sigma Black Belt,materials systems, material system, materials system, material systems,SAP, MRP, value stream mapping, on piece flow, spinal hooks, heartvalves, knee replacement, hip replacement, bone reamers, bone reamer,biopsy components, MDMA, machining, swiss cnc, cnc swiss, swiss screwmachines, cnc turning surgical devices, surgical device, ophthalmicdevices, ophthalmic device, plant manager, operations manager,executive management, product manager, plant supervisor, director ofmanufacturing, operations supervisor, vp of operations, vice presidentof operations, executive manager, bechet 32, echler, biglia, citizenl20, citizen L25, citizen L32, citizenM20, davenport, ergomat,gildemeister, hardinge, hardinge 42mm, hardinge conquest GT, Hitachiseiki, index 25mm, index 30mm, index 60mm, index MS32, kummer,manurhin, miyano, miyano 20mm, muratec, new Britain, Peterman,precitec, schutte 12mm, sunnen, takisawa, tornos 16mm - 20mm, tornos7mm - 10mm, tornos deco 1000 10 - 26mm, tornos deco 20mm, tornosmultideco, traub Med-Vec Resources Group / MSK East is the Largest,Most Experienced Search Firm Specializing in Medical Industry Jobs,Medical Industry Careers, Medical Technology Jobs, Medical TechnologyCareers and precision medical components jobs, precision medicalcomponents careers. Medvec Resources Group / MSK Eastwww.MedvecResourcesGroup.com MORE JOBS ~ MORE OFTENLocal Address or City: OaklandJob State/Province: CaliforniaJob Country: United StatesDetails about Job ID# 1104Position: Marketing/Sales repJob category: MarketingTarget:Salary: Negotiable / Will-DiscuDescription: Ark Marketing is an outsourcing company. We are lookingfor highly motivated goal oriented professionals to fill ourentry-level position. The candidates proving to be able to meet targetrequirements will be considered for managerial positions. YOUCONSISTENTLY DEMONSTRATE: Positive Attitude and Communication TeamOrientation Ability to Multitask Efficient Work Ethic Self-motivationand ability to work independently High energy/activity levels Drive forbusiness results and continuous learning Outstanding customer servicein a friendly, courteous manner Assessing customer needs and providingexpert advice about available products Training associates oncompany's productsLocal Address or City: 6 lansing SquareJob State/Province: OntarioJob Country: CanadaJob Zipcode/Postcode: L6Y2R9Details about Job ID# 1103Position: National Account ManagerJob category: SalesTarget: Mid Career (2+ years of experience)Salary: 80000.00 / YearlyDescription: Our Client, a major international truck tiremanufacturer, seeks an experienced Sales Professional to maintain andgrow revenues and relationships with trucking fleets throughout thearea of coverage. They seek someone currently residing in the greaterSt. Louis, MO area with Business to Business Sales experience thatwants to investigate a career selling products and services to thetrucking industry. This international industry leader is offeringexcellent benefits and career growth opportunities. Our firm hasassisted over 80 professionals to join their organization and lookforward to assisting you. JOB TITLE: National Account Manager (NAM) -Midwest Region. REPORTS TO: Midwest Region Fleet Manager OBJECTIVE: TheNAM manages relationships with existing and target fleet customerswithin assigned territory and is responsible for revenue growth andprofitability improvement of the contract fleet business. The NAM willcoordinate the account teams nationwide to collectively service our"Top 100" fleet customers. Time in territory divided betweenaccount management and account acquisition activities.EDUCATION/EXPERIENCE REQUIREMENTS: · A bachelor's degree along withthree to five years of field sales, sales management or relevantrelated experience is typically required. A Master's degree is aplus. · Mechanical aptitude or technical ability preferred. Basictruck tire and/or maintenance experience is a plus. Proven negotiation,interpersonal and communication skills are desired. · Effective atnegotiating fleet contracts and renewals. · Excellent presentationskills, account acquisition skills and closing skills. · Ability tofunction as a self-starter with considerable latitude of action.ESSENTIAL DUTIES AND RESPONSIBILITIES: · Responsible for revenuegrowth and profitability improvement of contract fleet business. ·Selling entire continuum of Programs, Services, Information andProducts (PSIP), including Total Outsourcing (TMS). · Managesbusiness relationships with our fleet customer's upper managementgroup. · Communicate fleet development plans to affected personneland dealers. · Coordinates training with Fleet Development Managers(FDMs) for fleet and dealer personnel on TTM and TMS processes. ·Maintain good understanding of financial model. · Understands who thecompetition is and what products and services they offer. · Capturesand continually updates fleet information into the Global CustomerManagement System (GCMS). · Understands resources that can providevalue to our fleet customers. · Maintains knowledge of transportationindustry and segment issues. · Maintains knowledge of tiremaintenance practices. · Coordinates the market teams to servicecontract fleets nationally. · Collaborate with marketing andfinancial sales support personnel to achieve our strategy. · Providementoring/expertise to FDMs in negotiating new and renewal fleetcontracts. · Prioritizes opportunities and then plans and schedulesactivities that match the investment to the payback. · Recognizes,isolates and solves problems that improve overall customer satisfactionand loyalty. TRAVEL REQUIREMENTS: Position will require travel on aregular basis, typically 80%%. Must be able to meet the travelrequirements of the job. Please contact: Gary Suhay Elite ResourcesGroup Fairlawn, Ohio 330-867-9412 search@elite-rg.comLocal Address or City: St. LouisJob State/Province: MissouriJob Country: United StatesJob Zipcode/Postcode: 63366Details about Job ID# 1102Position: Crystal Reports/SQL Server DeveloperJob category: Computers, Software Information TechnologyTarget: Mid Career (2+ years of experience)Salary: Market Rate / HourlyDescription: Greetings, Diverse Technical is currently looking for anexperienced SQL Server / Crystal Reports developer for an initial 3month contract. If you or someone you know is interested, please replywith your resume to jobs@diversetechnical.com with subject: Job Id2021DB. Further details are as follows: Job Type: Contract - 3 monthsLocation: Toronto - Downtown Rate: DOE Responsibilities: Design,develop and deploy Crystal Reports, Crystal Queries and CrystalAnalysis cubes. Develop and test ETL processes to source data fromexisting datamart. Provide support and mentoring to other team members.Technical Proficiency: Potential candidate must demonstrate very strongcommand of the following: SQL Server 2000 (including DTS) CrystalReports v10 Crystal Analysis v10 Crystal Query v10 ASP Please respondwith your resume to jobs@diversetechnical.com with subject: Job Id2021DB.Local Address or City: Toronto - DowntownJob State/Province: OntarioJob Country: CanadaJob Zipcode/Postcode: M4H1J5Details about Job ID# 1101Position: Supervisor - screw machine, rotary transfer, cncJob category: Management Manufacturing and ProductionTarget: Management (Manager/Director of Staff)Salary: 65,000 / YearlyDescription: Aerospace fittings manufacturer is searching for aproduction supervisor to manage their machining area. Interestedcandidates must have a strong understanding of cutting tools,production machining, planning, scheduling and leadership skills. Thisposition will manage 30 to 45 employees and is responsible forproductivity, problem solving and managing the departments dailyoperations. Past experience working in a production CNC, screw machine,rotary transfer and/or swiss CNC is strongly preferred. This is agrowing company that offers great career opportunities. This positionis open due to the promotion of an employee, placed by Medvec ResourcesGroup / MSK East. Our client has grown and has enjoyed increased salesfor their division. Strong benefits, compensation packages and careergrowth will be offered. This opportunity is with one of the Bostonareas top manufacturing companies. MUST HAVE: five years of experiencein supervision and a strong production machining technical background.Keywords relating to position: Supervisor, Production Supervisor,Manager, Management, Production Manager, Machining Manager, MachiningSupervisor, cnc machining, screw machine, screw machining, screwmachined tooling, screw machines, swiss cnc, swiss screw machines,swiss cnc turning, multi spindle, multispindle, multi spindled,multiple spindle, multi spindled, Acme Gridley, New Britain, Warner &Swasey, Cincinnati, Citizen, Index, Mazak, Miyano, Mori Seiki,Mori-Seiki, Star, Tsugami, Tornos, Tornos Deco, Tornos Bechler, CNCturning, Conomatic, Conematic, Davenport, Euroturn, Gildemeister,Greenlee, Schutte, Wickman, Hydromat, rotary transfer, kingsbury,kingsberry, escomatic Medvec Resources Group / MSK East is the Largest,Most Experienced Search Firm Specializing in Screw Machining Jobs,Screw Machine Job, Screw Machining Jobs, CNC Machining Jobs, SwissScrew Machining Jobs, CNC Swiss Jobs, CNCSwissJobs, Swiss CNC TurningJobs, High Volume Machining Jobs, High Volume Turning Jobs andPrecision Machining Jobs. www.MedvecResourcesGroup.comwww.MRGCareers.com MORE JOBS ~ MORE OFTEN Key words: Screw MachineJobs, Screw Machining Jobs, Precision Machining Jobs, PrecisionMachining Job, Cold Heading Jobs, Cold Heading Job, Swiss CNC Jobs,Swiss CNC Job, Swiss cnc Turning Jobs, Swiss CNC turning job, Cam screwmachines, Acme screw machines, Acme Gridley, Davenport screw machine,New Britain, Conomatic, Index, Gildemeister, Schutte, Euroturn, Tornos,Warner & Swasey, Greenlee, Brown & Sharpe screw machines, Wickman,Swiss Type CAM Screw Machines, Escomatic, Tornos, Bechler, Conomatic,Bridgeport, Bryant, Cincinnati, Traub, Peterman, Strohm, Swiss CNCLathes, Star, Citizen screw machines, Citizen Cincom, Tsugami,Hardinge, Tornos Deco, Nomura, Mazak, Mazatrol, Miyano screw machine,Mori Seiki, Nakamura, National Acme, Nomura, Okuma, Omni Turn,Peterman, Petermann, Schutte, Strohm, Swiss CNC lathes, Traub, Tsugamiscrew machine, Turrett, Collets, Ultramatic, Unigraphics, Warner &Swasey, Wasino, Wickman, single spindle, singlespindle, singlespindled, single-spindle, pneumatics, hydraulics, calipers, HMC, VMC,Pro-Engineer, Pro-E, production machining, high volume machining,precision machining, cnc machining, swiss machining, swiss CAMmachining, grinding, micromters, Emco, Escomatic, Transfer Machining,Hydromat, Kingsbury, Cone Blanchard, Rizmatic, Eubama, Tonshoff,Turmat, Wirth Et Gruffat, CNC Turning, Cincinnati, Mazak, Euroturnautomatic screw machine, Okuma, Mori Seiki, Waseno, Miyano, Hardinge,Fadal, Fanuc controls, Fusion, Gittings & Lewis, Automatic screwmachine, Screw machine, Multiple / multi spindle screw machine, Singlespindle screw machine, Swiss screw machine, Swiss CAM machine,Automatic bar machine, Rotary transfer machine, Trunion transfermachine, Inline transfer machine, Dial transfer machine, Slidingheadstock CNC, precision metals, Precision machining, Medicalmachining, Screw machining, CNC turning, Production machining, swisscam jobs, automotive, Fluid power, Hydraulics, screw machine jobs, Firearms, Electronic, Connectors, Colaz connectors, Fiber optic connectors,Rf connectors, Shafts bearing, Faucet, machine tool jobs, Plumbing,Medical, Bone screws dental inserts, Implants, spinal implants, Jobshop, Contract shop, Aerospace, Hose fittings, Valves, Lp gas controls,Grease fittings, Hand tools, Fasteners, Insert fasteners, ppap, fmea,apqp, 8D, ISO, QS, ISO9000, QS9000, ISO9001, AS9000, S9100, Mastercam,Autocad, Cad, Cam, Kanban, Kaizen, JIT, FDA, PLC, Six Sigma, SPC, TQM,cnc machining, Allen BradleyLocal Address or City: CantonJob State/Province: MassachusettsJob Country: United StatesDetails about Job ID# 1100Position: Swiss CNC Set Up Operators (Tsugami / Citizen / Star screwmachines)Job category: Engineering Installation, Maintenance and RepairManufacturing and Production Other Full-timeTarget: Mid Career (2+ years of experience)Salary: - / HourlyDescription: Salary: /hr - /hr. Located in sunny SouthernCalifornia, we have several clients in need of experienced Swiss CNCSet Up Operators. Qualified candidates must have at least 3 yearsexperience setting up and operating Swiss CNC screw machine tools suchas Tsugami, Citizen, and/or Star. Our clients prefer candidates who arelocal to the Los Angeles area, but will consider all qualifiedindividuals who are willing to cover his/her own relocation expenses.These companies are offering competitive wage and benefits packages.When applying, please refer to Job Code: LSI 2401. If you are anexperienced Swiss CNC Setup Operator, please email your resume alongwith a detailed list of the machines you are experienced with, in MSWord format to Lance Solak at: Lance@Lsijobs.com LSI ManufacturingSolutions is the USAs #1 firm staffing the Swiss CNC and Screw MachineIndustries Nationwide. NEW JOBS RECEIVED DAILY! Some terminologyrelated to LSI Manufacturing Solutions Industry: screw machines, screwmachine jobs, screw machining jobs, Swiss CNC screw machines, Swiss CNCscrew machine jobs, Swiss CNC screw machining jobs, Swiss CNC jobs, CNCSwiss screw machining jobs, Swiss screw machine jobs, Swiss screwmachining jobs, cnc jobs, CNC machining jobs, CNC machine jobs, SwissCAM jobs, Swiss CAM machining jobs, Swiss CAM screw machine tools,machine tool jobs, precision machining jobs, manufacturing jobs,engineering jobs, machining jobs, single spindled machines,multi-spindled machines, multiple spindled screw machines, automaticscrew machines, screw machining, CNC machining, precision machining,high volume machining, production machining, Swiss CNC screw machining,Swiss CAM machining, set up operator, machinist, screw machinist, SwissCNC screw machinist, cnc programmer, Swiss CNC programmer, Swiss CNCmanufacturing engineer, CNC Swiss process engineer, Swiss CNC fieldservice engineer, Swiss CNC applications engineer, Swiss CNCmaintenance technician, Swiss CNC leadman, Swiss CNC foreman, Swiss CNCsupervisor, Swiss CNC manager, Swiss CNC shop manager, rotary transfer,automated assembly, robotics, cold heading, cold forming, precisionmetals, fluid power, medical device manufacturing, automotivemanufacturing, aerospace manufacturing, military manufacturing,filtration device manufacturing, plastics manufacturing, injectionmolding, commercial components, consumer products, industrial. CHECKOUT WWW.LSIJOBS.COM FOR THE NEWEST AND HOTTEST JOBS AVAILABLENATIONWIDE IN THE SWISS CNC AND SCREW MACHINE INDUSTRIES!Local Address or City: Southern CAJob State/Province: CaliforniaJob Country: United StatesDetails about Job ID# 1099Position: Plant Manager (screw machines & high volume machining)Job category: Engineering Executive Management Manufacturing andProductionTarget: Management (Manager/Director of Staff)Salary: 000 - 000 / YearlyDescription: Salary: ,000 - ,000. Located in the NortheasternU.S., this high volume manufacturer specializing in medical,commercial, and automotive components, is searching for a new PlantManager, due to expanding operations. To be considered you must have aDegree, and have at least 10 years previous plant management experienceover multiple product lines. You must also have a strong knowledge ofengineering and process development on screw machines and Swiss CNCscrew machines, as well as extensive knowledge and experience withhandling daily operations, production scheduling, budgeting, and P&Lresponsibilities. This company is offering an excellent wage andbenefits package, along with relocation assistance if needed. Pleaseinclude a detailed list of the screw machines you are experienced with,when submitting your resume, and refer to Job Code: LSI 2398. If youmeet these qualifications, please email your resume in MS Word formatto Lance Solak at: Lance@Lsijobs.com LSI Manufacturing Solutions is theUSAs #1 firm staffing the Swiss CNC and Screw Machine IndustriesNationwide. NEW JOBS RECEIVED DAILY! CHECK OUT WWW.LSIJOBS.COM FOR THENEWEST AND HOTTEST JOBS AVAILABLE NATIONWIDE IN THE SWISS CNC AND SCREWMACHINE INDUSTRIES! Keywords related to LSI Manufacturing Solutionsindustry: Swiss CNC screw machining jobs, Swiss CNC jobs, cnc jobs,screw machine jobs, Swiss CAM jobs, precision machining jobs, machinetool jobs, Acme, Acme Gridley, Bechler, Bridgeport, Brown & Sharpe,Cincinnati, Citizen screw machines, Cone Blanchard, Conomatic,Davenport screw machines, Deco, Emco, Escomatic, Euroturn automaticscrew machines, Allen Bradley, Fadal, Fanuc controls, Gibbs, Giddings &Lewis, Gildemeister, Greenlee, Haas, Hanwha, Hardinge, Hitachi Seiki,Howa, Hurco, Hydromat, Index, Integrex, Kingsbury, Kitamura, Kummer,Makino, Matsuura, Mazak, Mazatrol, Miyano, Mori Seiki, Nakamura, NewBritain, Nomura, Okuma, Peterman, Sabre, Schutte, Star screw machines,Strohm, Swiss, Swiss CNC lathes, Swiss CNC mills, Tornos screwmachines, Tornos Bechler, Tornos Deco, Traub, Tsugami screw machines,Turret, Ultramatic, Unigraphics, Warner & Swasey, Wasino, Wenzel,Wickman, Accuturn, single spindle, single spindled, multi spindle,multispindled, multiple spindled screw machines, cold forming, coldheading, hydraulics, pneumatics, HMC, VMC, Pro-Engineer, Pro-E,production machining, cnc machining, Swiss CNC machining, precisionmachining, high volume machining, grinding, cnc turning centers, cncmachining centers, micrometers, estimator, capital equipment,president, vice president, general manager, business unit manager,plant manager, operations manager, manufacturing manager, manufacturingsupervisor, production manager, production supervisor, machine centersupervisor, engineering manager, director of engineering, foreman,leadman, manufacturing engineer, process engineer, estimating engineer,applications engineer, tooling engineer, field service engineer,controls engineer, maintenance manager, project manager, projectengineer, cnc programmer, setup, set up operator, machinist, salesmanager, sales engineer, quality manager, quality engineer, RFengineer, Lean manufacturing, continuous improvements, SPC, mastercam,autocad, cad, cam, Kaizen, kanban, Kan Ban, APICS, BSME, ASQE, APQP,FMEA, PFMEA, PPAP, JIT, 8D, EDM, FDA, GMP, GD&T, MRO, 5S, MRP, TPM,CMM, PLC, CNC controllers, Six Sigma, black belt, screw machine, screwmachines, screw machining, Swiss CNC, Swiss CAM, precision metals,rotary transfer, robotics, automated assembly, automation, fluid power,medical device manufacturing, automotive manufacturing, militarymanufacturing, aerospace manufacturing, commercial components,industrial.Local Address or City: Northeastern U.S.Job State/Province: Job Country: United States
09-29 Following jobs posted at http://anykindjob.com All services are free for employers and job seekers.
http://anykindjob.com offers completely free services for employers andjob seekers. Global one-stop help-wanted site with advanced job andresume search functions. The followings are some of the latest jobposts. Details of job contact info are at http://anykindjob.comDetails about Job ID# 1658Position: Electrical engineer, substation designJob category: EngineeringTarget:Salary: tbd / Will-DiscuDescription: North Carolina company seeking electrical engineer,substation design, for full time opportunity! Successful candidatewill: Prepare main one line and station auxiliary one line diagramsDevelop project design criteria, substation/switchyard generalarrangement, layout, and elevation drawings Develop grounding drawingsPerform cable ampacity, grounding, lightning, illumination, and stationauxiliary load calculations Perform trench and conduit design Requires:BS in Electrical Engineering. Professional Engineering Licensepreferred, MSEE a plus. Minimum seven years of experience in electricaldesign for high voltage and distribution substations for utility andindustrial customers. Knowledge of MS tools, AutoCAD, and otherdiscipline software products, understanding of ANSI standards, IECstandards and knowledge a plus. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/V/F/DLocal Address or City: WendellJob State/Province: North CarolinaJob Country: United StatesJob Zipcode/Postcode: 27591Details about Job ID# 1657Position: P3 SchedulerJob category: EngineeringTarget:Salary: tbd / Will-DiscuDescription: Headway Corporate Resources currently seeking experiencedP3 scheduler for opportunity in power plant environment! Successfulcandidate will work at multiple locations all over the United States,but maintain current home base. Four years required experience in powerplan environment, working knowledge of Primavera 5.0. Direct hire,competitive salary, reimbursed per diem and expenses. How toapply/contact information: To be considered for this position, registerwith Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCEN@headwaycorp.com. View all of our jobs online atHeadwaycorp.com. EEO/AA/M/F/V/DLocal Address or City: Home locationJob State/Province:Job Country: United StatesJob Zipcode/Postcode: 66214Details about Job ID# 1653Position: EN-640 Software Test Engineer - Contract - Gaithersburg, MD(Local CandidatesJob category: Computers, SoftwareTarget: Mid Career (2+ years of experience)Salary: BOE / HourlyDescription: EN-640 Software Test Engineer - Contract - Gaithersburg,MD (Local Candidates Only) Location: Gaithersburg, MD Length: 6 monthsRate: BOE A company that develops and manufactures biotech diagnostickits needs a Software Test Engineer. You will be responsible fortesting the software that drives medical diagnostic devices. You willbe responsible for performing and approving software verification andvalidation activities under an FDA compliant product developmentprocess. You will: o. Assist in the design, development and testingprocesses for legacy and new applications o. Analyze and derive productand software requirements in a cross-functional team o. Establish anautomated test environment and incorporate testing within the softwaretest process o. Work with modern software testing life cycle methods inthe regulated space o. Develop test plans, protocols and results forsoftware verification and validation of product software eitherdeveloped in-house or in collaboration with outsourced vendors o.Develop acceptance, module and system test plans for product softwarereleases o. Demonstrate regulatory compliance for all non-productsoftware used in the development, verification and validation ofproduct software Requirements: o. 8+ years experience with testinghardware-software products under Windows (multiple versions) (Required)o. Experience with software debugging tools (Required) o. Experiencewith XML and other hierarchical formats (Required) o. Experience withrelational databases (SQL Server, Oracle) (Required) o. Experience withscripting languages (Python, Perl, Ruby) (Required) o. Experience withUnit Testing Tools (such as JUnit, CppUnit, NUnit) (Required) o.Experience with Automated Testing Tools (such as QuickTest Pro,WinRunner) (Required) o. Experience with Requirements Management Tools(such as RequisitePro, DOORS) a plus o. Familiarity with development inthe medical diagnostic industry (or regulated space) is a plus o.Experience in the use of analysis capture tools (such as LabView,Matlab) is a plus o. Experience with object-oriented programming (C++,C#, Java) a plus o. Ability to develop and use scripting languages(Python, Perl, Ruby) is a plus o. Understands networking technologies(TCP/IP, UDP) is a plus o. Experience testing products under RTOS aplus o. Experience as a Software Test Lead is a plus o. BS degree inComputer Science, Mathematics, Biomedical or Electrical Engineering(Required) Notes: o. Local Candidates Only o. US citizens or greencardholders only. o. Please specify your bill rate when applying andwhether this is 1099 or W2 For quick consideration Click here to applyLocal Address or City: Gaithersburg, MDJob State/Province: MarylandDetails about Job ID# 1652Position: REMEDY DeveloperJob category: Computers, SoftwareTarget: Mid Career (2+ years of experience)Salary: to 85k base plus / YearlyDescription: Our client a large software house, has been successful inwinning new business. Work on the team to implement REMEDY and the ITILprocess for a new client. Great co, expanding rapidly, lots of room forpersonal and professional growth. Relaxed, informal, "un-stuffy"environment. Location Toronto Perm fulltime, to 85k base pluspackage depending on experience. ============= Preferred skills includeany or all of: - REMEDY Action Request System - REMEDY Asset Management- REMEDY Change Management - REMEDY Help Desk. Start date ASAP. Forconsideration, please send resume to jpapish (at) spectrumjobs.com Weabide by PIPEDA and your personal information is not used withoutdisclosure. Thank you.Local Address or City: TorontoJob State/Province: OhioJob Country: CanadaJob Zipcode/Postcode: M2NDetails about Job ID# 1651Position: Branch Manager for Mortgage CompanyJob category: Finance/EconomicsTarget: Management (Manager/Director of Staff)Salary: ,000-,000 / YearlyDescription: Position: Branch Manager DOT: 186.167-086 Industry:Financial Reports To: Chief Executive Officer FLSA Status: ExemptSupervises: Assistant Branch Manager, Administrative Assistant, LoanOfficers and Account Executive Responsibilities: · Oversees branchoperations to ensure corporate culture, values, policies, procedures,and practices are implemented and administered. · Responsible forestablishing and maintaining an efficient and high productive salesforce that will continue to increase Guidance Financial Corporation'smarket share in a particular territory. · Continuously motivates teamby leading by example, setting standards, recognizing those high andlow producers, team building and being enthusiastic, energetic, andoptimistic. · Establishes procedures for custody and control ofcompany assets, including but not limited to equipment, office area,software programs, company and client information, company proprietaryinformation, trade secrets, etc. to ensure safekeeping andconfidentiality. · Maintains a timely communication line between thebranch and corporate office. · Ensures that the Customer ServiceReport (CSR) and daily reports are received by corporate, before noonof the next business day, to confirm all set appointments. · Preparesand conducts employee performance reviews, employee development actionplans, and other employee reviews on a monthly and/or quarterly basis.· Implements disciplinary actions, such as verbal warnings andwritten notices, to those loan officers and other employees who are notcomplying with company policies, procedures and practices. ·Responsible for the petty cash replenishment monthly. Ensures allreceipts and log are submitted in a timely manner. · Identifiessolutions and strategies to overcome any problems that may ariseaffecting branch, such problems may include, but not limited toemployee relations, employee performance and productivity, customercomplaints, and external third parties complaints. · Contactscustomers, business, and community to promote goodwill and generate newbusiness. · May assist loan officer(s) and account executives with avariety of responsibilities, such as substituting for the loan officeror account executive to meet with client(s) and contact client(s) forany documentation and/or information needed to complete loanprocessing. · May meet with client(s) to build rapport and clientrelationship. Provides client(s) with exceptional customer service.Identifies and analyzes client(s) needs to find the best product forhim/her/them. · May be responsible for administering some humanresources responsibilities, such as recruiting, hiring, dismissing, andtraining of loan officers and account executives. · Promotes aprofessional and positive work environment. · Additionalresponsibilities may be assigned. Qualifications: · Leadership andmanagement skills · Excellent verbal and written communication skills· Excellent customer service skills · Strong organizational skills· Ability to follow-up · Ability to problem solve · Ability tomulti-task · Detail oriented · Motivated, enthusiastic, energetic,aggressive and sales driven · Computer proficient with a variety ofMicrosoft software, such as MS Word, MS Excel, MS Outlook and MSPowerPoint · Ability to type at least 40 WPM · Bachelor's Degree· Management experience · Knowledge of the mortgage industry,preferred · Possesses professionalism · Positive attitude LastRevised:9/26/2006Local Address or City: 5800 South Eastern Ave, Ste. 200, CommerceJob State/Province: CaliforniaJob Country: United StatesJob Zipcode/Postcode: 90040Details about Job ID# 1650Position: Store ManagerJob category: Retail/WholesaleTarget:Salary: TBD / Will-DiscuDescription: Focus On Your Career! Headway Corporate Resources seekingexperienced seasonal (Oct - Jan 31) Store Manager in Dickinson NorthDakota. Successful candidate will be responsible for: hiring, trainingand managing staff, daily deposits, weekly reports, promotional signageand marketing, customer service. Earn a 3-4%% commission of total salesalong with a 0-400 weekly salary. Position requires: At Least OneYear Retail Experience Management Experience Strongly PreferredExceptional Customer Service and Training Skills Mathematical AbilityBasic Computer Skills Strong Problem Solving and Decision Making SkillsSolid Professional Judgment Weekly salary plus bonus. How toapply/contact information: To be considered for this position, registerwith Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCAdmin@Headwaycorp.com . Use position reference code numberAKJ124. About Us Headway Corporate Resources is a regional marketleader in the delivery of diversified, high quality employmentservices. We offer a complete range of employment opportunities:temporary, temporary-to-hire, direct-hire and contract. Headwayspecializes in placements for professionals in accounting and finance,legal/medical, mortgage/insurance, professional/technical, andengineering. Headway brings top-flight companies and outstandingprofessionals together. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/F/V/DLocal Address or City: DickinsonJob State/Province: North DakotaJob Country: United StatesJob Zipcode/Postcode: 58601Details about Job ID# 1631Position: EN-639 User Interface Designer - Staff - Santa Clara (LocalCandidates Only)Job category: Arts, Entertainment, and MediaTarget: Entry Level (less than 2 years of experience)Salary: BOE + stock options / Will-DiscuDescription: EN-639 User Interface Designer - Staff - Santa Clara(Local Candidates Only) Salary: BOE + stock options A Web Applicationscompany is looking for a User Interface Designer to contribute to thenext revolution of a world-class web-based application that's used bythousands of users around the world. In this role you should: o. Beable to demonstrate top-notch user interface design skills,user-centered design processes, update functional specifications basedupon designs and have a strong portfolio of design projects. o. Showprevious work that demonstrates an understanding of the user-centereddesign and able to prepare low-fidelity models to demonstrate conceptviability. o. Be detail-oriented and able to juggle multipleassignments at one time and have strong communication and organizationskills. As a User Interface Designer you will: o. Translate userrequirements into highly-usable Web applications. o. Work with projectmanagers and engineers to design, test, and validate design concepts.o. Turn abstract requirements and use case documentation into concretedesign specifications o. Coordinate internal or external usabilitytesting as needed to validate designs. Requirements: o. 5 yearsexperience designing web-based software applications (Required) o.Understanding of the benefits, constraints, and issues involvingtechnologies such as AJAX, HTML, CSS, JavaScript, and DHTML (Required)o. Proficiency with HTML or Flash prototyping tools (Required) o.Experience with PhotoShop, Illustrator, PowerPoint, Adobe Acrobat,Microsoft Word, and Flash (Required) o. Degree in User InterfaceDesign, Human Computer Interaction (HCI), Interaction Design, orequivalent work experience o. Visual design and illustration skills area plus Notes: o. Authorized US workers only o. Local candidates only o.No telecommuting available (sorry, we asked) o. Please specify yourcurrent salary when applying o. Questions? Call us at 888-378-2333 x 4For quick consideration Click here to applyLocal Address or City: Santa Clara , CAJob State/Province: CaliforniaJob Country:Details about Job ID# 1630Position: Store ManagerJob category: Retail/WholesaleTarget:Salary: TBD / Will-DiscuDescription: Focus On Your Career! Headway Corporate Resources seekingexperienced seasonal (Oct 1. - Jan 31) Store Manager in North BendWashington. Successful candidate will be responsible for: hiring,training and managing staff, daily deposits, weekly reports,promotional signage and marketing, customer service. Earn a 3-4%%commission of total sales along with a 0-400 weekly salary. Positionrequires: At Least One Year Retail Experience Management ExperienceStrongly Preferred Exceptional Customer Service and Training SkillsMathematical Ability Basic Computer Skills Strong Problem Solving andDecision Making Skills Solid Professional Judgment Weekly salary plusbonus. How to apply/contact information: To be considered for thisposition, register with Headway by visiting our career portal atwww.headwaycorp.com/jobs/. Or, you may e-mail your resume and coverletter to HRCAdmin@Headwaycorp.com . Use position reference code numberAKJ110. About Us Headway Corporate Resources is a regional marketleader in the delivery of diversified, high quality employmentservices. We offer a complete range of employment opportunities:temporary, temporary-to-hire, direct-hire and contract. Headwayspecializes in placements for professionals in accounting and finance,legal/medical, mortgage/insurance, professional/technical, andengineering. Headway brings top-flight companies and outstandingprofessionals together. What Makes Us Different? We care aboutcharacter and quality, and our passion is to match the world's mostinnovative people with the world's most innovative companies. And westrive to do it better than anyone else! EEO/AA/M/F/V/DLocal Address or City: North BendJob State/Province: WashingtonJob Country: United StatesJob Zipcode/Postcode: 98045Details about Job ID# 1600Position: TW-917 Sr Technical Writer - Staff - San Jose, CA (LocalCandidates Only)Job category: Information TechnologyTarget: Management (Manager/Director of Staff)Salary: BOE / Will-DiscuDescription: TW-917 Sr Technical Writer - Staff - San Jose, CA (LocalCandidates Only) Salary: BOE A biotech firm in San Jose is looking fora senior technical writer to plan, develop, and maintain documentationsuites for biomedical lab instrumentation and software, includinghardware and software user guides, quick reference guides and onlinedocumentation. You will: o. Create documentation using hands-onexperience with products, develop documentation plans, manage technicalreview cycles and interact effectively as part of cross-functionalprogram teams. o. Lead multi-writer projects and mentor other writersas needed. Requirements: o. 2 years experience documenting medicalhardware/instrumentation and it's related software (Required) o.Proficiency with FrameMaker (Required) o. Experience developing onlinehelp with RoboHelp or other authoring tools (Required) o. Previousexperience working in a medical laboratory or FDA environment is amajor plus o. Experience with Webworks and Acrobat is a plus o. Workingknowledge of documentation localization is a plus o. BA/BS degree in alife/physical science, English, Technical Communications or abackground in Science o. Please specify your current compensation whenapplying Notes: o. Telecommuting allowed one day a week. o. US citizensor greencard holders only. o. Local candidates only. o. Questions? Callus at 888-378-2333 x 4 o. Please specify your current compensation whenapplying. For quick consideration Click here to applyLocal Address or City: San Jose, CAJob State/Province: CaliforniaDetails about Job ID# 1580Position: sales associateJob category: Retail Retail/WholesaleTarget:Salary: based upon position / HourlyDescription: The Toy Connection is a specialty toy store that pridesitself in having a knowledgeable staff and a product assortment 2nd tonone. If you're ready to get busy and make a difference, this might bethe lplace for you. No nights( only during the holidays until 7:00pm)No Sundays. Growth potential availableLocal Address or City: 1111 HAlf Day Road, BAnnockburnJob State/Province: IllinoisJob Country: United StatesJob Zipcode/Postcode: 60015Details about Job ID# 1587Position: EN-636 Database Sales Engineer - Staff - San Francisco, CAJob category: SalesTarget: Mid Career (2+ years of experience)Salary: BOE / HourlyDescription: EN-636 Database Sales Engineer - Staff - San Francisco,CA Salary: BOE A leading developer of Transactional Data Management(TDM) solutions is looking for an experienced systems engineer tosupport their sales representatives in the Bay Area and PacificNorthwest. In this role, you will be responsible for providing pre-saleand post sales technical support to the sales team. You will alsofunction as a technical resource for the customer and for lessexperienced Systems Engineers and consultants. In a pre-sales supportrole, you will: o. Prepare and deliver demonstrations and presentationsof most products and answers basic technical questions about them withminimal outside assistance. o. Provide technical support to the salesrepresentatives. o. Assist customers during product evaluation byinstalling software, providing product training when necessary,answering technical questions, managing and executing productbenchmarks and proof-of-concepts, and developing an account supportstrategy. o. Interface with the customer's technical team, gatheringinsight and information that will be useful in developing a salesstrategy for the account. In a post-sales support role, you will: o.Ensure each customer's ongoing technical satisfaction with the companyand its products. o. Transition the customer to post-sales supportchannels. Requirements: o. 3+ years experience as a sales engineer(Required) o. 5+ years of experience in database and/or datareplication technologies. Must have a good working knowledge ofdatabase systems, concepts, and architectures. (Absolutely Required) o.Prior experience as a DBA is a plus. Knowledge of EAI, ETL, and EIItechnologies is a major plus. o. Must be willing to travel. Average 50%%travel to support sales representatives in the SF Bay Area and PacificNorthwest. (Required) o. Bachelors degree in Computer Science or othertechnical discipline. Notes: o. The company is close to BART. o. Asenior (lead) role is also open. o. Authorized US workers only. o.Questions? Call us at 888-378-2333 For quick consideration Click hereto applyLocal Address or City: San Francisco, CAJob State/Province: CaliforniaDetails about Job ID# 1106Position: QA Lead (Perm), MississaugaJob category: Computers, SoftwareTarget:Salary: 1 / YearlyDescription: QA Lead (Perm), Mississauga Our client a Christiancharity, is looking for a QA Leader. Your Christian religion should bevery important to you as it is the business of the company. Pleasecomment on that in your cover email. The Software Development Group isresponsible for the development, enhancement, implementation andsupport of all software applications on the Intel platform. Theyinclude web applications, CRM for the Call Centre, Raiser's Edge, aphoto imaging system, a correspondence system and a number of reportingsystems. Many of these applications are mission-critical and areintegrated with our donor systems on the iSeries. Responsibilities:Reports to Manager, Software Development, Creates clear, concise,detail oriented test plans based on functional requirements. Executesdifferent kinds of testing (i.e., SIT, data-mapping,performance/load/stress) to support new and existing functions ofapplications. Engages early in Project Life Cycle with ProjectManagement to assess and determine high-level testing Level-Of-Effort(scope, approach, timing, duration, resources, etc.) Works with CIT(Change Implementation Team) to conduct UAT. Coordinates testingschedules with different groups (i.e., vendor, internal and externalgroups). Provides QA status and defect tracking reports to project teamand manager(s). Liaises with development team, project management andbusiness owners for testing and QA related functions. Performsproduction verification after code implementation. Administers andMaintains bug tracking system. Ensures the integrity of test materialby establishing and maintaining procedures and guidelines for updatingand archiving of regression tests. Develops test procedures and assistsprojects in developing Quality Plans and Test Plans, Providesdirection, training, and supervision for junior staff. Requirements:Minimum 5 years of QA analyst experience, a university degree.Proficient in bug tracking and stress testing tools, MS Office, MSVisio, MS Project, White box testing experience, Knowledge of testingconcepts and methodologies, Experience in writing test plans, testdesigns, and executing test cases, Understanding of behaviours ofdifferent browser types, Basic understanding of operating systems andPC hardware. Nice to have: CASE tools, Knowledge of HTML, XML, databasesuch as SQL Server, IBM DB2, Scripting languages, such as JavaScript,HTML, XML, Project Management and team leadership experience.----------------------------- To send a resume: Our preferred resumeformat is in the link below. To avoid delays, please read it carefullyand comply with our format. We know what our clients want to see in aresume. Please email a Word doc chronological resume (where youraccomplishments are listed under the company where you did them ratherthan separately), to heenan@rogers.com Out of respect for our clients'time, resumes should be no longer than 2-3 pages. Please name your Worddoc Lastname, Firstname.doc (Smith, John.doc). Please do NOT send acover letter, all relevant information should be in your resume. Youmay put salary, desired location, permanent or contract, etc. in abrief email note. Please do not put any information in a cover notethat is already in your resume. Your address and contact informationshould be at the top of the first page. Education, technical skills andcertifications should be near the top of the resume. You may sendreferences now or later, as you wish. Your Work History should be asfollows: Please put the city (and country, if outside Canada) and *URL*beside every company name on your resume. And, very important, one linesaying what kind of business it is, so we don't have to research it.Also, tell us who you reported to (their position). As a service to ourclients, we do not forward any resume to our clients without thefollowing information completed. (Self-employed or consultants shouldlist their work history in exactly the same way, please do not justwrite "self-employed" without giving details): For example:-------------------- January 2001 - March 2003 ABC Company (Toronto)www.abc.com Programmer(Contract/Permanent/Coop/Volunteer/Part-Time/Full-time) ABC company isa company that develops software for the insurance industry. Reportedto the Information Technology Manager. ----------------------------- Areminder not to use boxes, tables or logos in your Word doc, theybecome garbled when scanned so we cannot read them, which puts you at adisadvantage. Please note that one of our recruiters will contact youonly after an acceptable resume has been received, and only when thereis a suitable position to discuss. Resumes are held in strictestconfidence, all submissions to clients will be discussed with youfirst. Heenan Independent Recruiters Toronto, Canada heenan@rogers.comPreferred resume format: www.pixelsmith.net/RB.doc Coming soon, our newpublication: "A Guide to Finding a Job in Canada" Please email fordetails. ----------------------------Local Address or City: TorontoJob State/Province: OntarioDetails about Job ID# 1105Position: Director of Manufacturing - plant manager, medical device,FDA, GMPJob category: Management Manufacturing and ProductionTarget: Management (Manager/Director of Staff)Salary: 82,000 - 115,000 / YearlyDescription: A progressive, growing division of a publicly tradedmedical components company is searching for a Director ofManufacturing. This position is open due to the promotion of a valuedemployee. This Plant Manager will be responsible for plant operationswithin a continuous improvement environment. Knowledge of scheduling,quality, material and continuous improvement systems is a must. Pastexperience working in a FDA / GMP environment is strongly preferred.Interested candidates should have a four year degree and either 5 yearsof engineering or operations management within a manufacturing ormachining environment. Candidates must have a strong work history orreal continues improvements and completed major projects to stream linethe manufacturing operation. Lean Manufacturing, Six Sigma or Kaizen,and project experience is strongly desired. Past experience managinglarge budgets, capital projects, product cost, profit and loss is amust. Our client has plants throughout the world and offers outstandingopportunities for career advancement. They are searching for promotableleaders with a progressive "can do" attitude. This facilityproduces precision machined bone screws, medical implants, orthopedicdevices and surgical instruments. We would prefer candidates with astrong manufacturing / machining background. Our client has grown bysales and acquisition of several growing medical suppliers. This is thetype of company everyone wants to work for, due to their progressiveenvironment. MUST HAVE: a four year degree, lean manufacturing or SixSigma experience, leadership skills, operations and a strong technicalmanufacturing and or precision machining background. Six Sigma BlackBelts are preferred. FDA, GMP and/or direct medical experience is alsostrongly desired. Keywords relating to position: medical, medicaldevices, medical device, implant, implants, bones screws, bone screws,bone screw, orthopedic, surgical instruments, medical supplier, FDA,GMP, Lean Manufacturing Six Sigma Green Belt, Six Sigma Black Belt,materials systems, material system, materials system, material systems,SAP, MRP, value stream mapping, on piece flow, spinal hooks, heartvalves, knee replacement, hip replacement, bone reamers, bone reamer,biopsy components, MDMA, machining, swiss cnc, cnc swiss, swiss screwmachines, cnc turning surgical devices, surgical device, ophthalmicdevices, ophthalmic device, plant manager, operations manager,executive management, product manager, plant supervisor, director ofmanufacturing, operations supervisor, vp of operations, vice presidentof operations, executive manager, bechet 32, echler, biglia, citizenl20, citizen L25, citizen L32, citizenM20, davenport, ergomat,gildemeister, hardinge, hardinge 42mm, hardinge conquest GT, Hitachiseiki, index 25mm, index 30mm, index 60mm, index MS32, kummer,manurhin, miyano, miyano 20mm, muratec, new Britain, Peterman,precitec, schutte 12mm, sunnen, takisawa, tornos 16mm - 20mm, tornos7mm - 10mm, tornos deco 1000 10 - 26mm, tornos deco 20mm, tornosmultideco, traub Med-Vec Resources Group / MSK East is the Largest,Most Experienced Search Firm Specializing in Medical Industry Jobs,Medical Industry Careers, Medical Technology Jobs, Medical TechnologyCareers and precision medical components jobs, precision medicalcomponents careers. Medvec Resources Group / MSK Eastwww.MedvecResourcesGroup.com MORE JOBS ~ MORE OFTENLocal Address or City: OaklandJob State/Province: CaliforniaJob Country: United StatesDetails about Job ID# 1104Position: Marketing/Sales repJob category: MarketingTarget:Salary: Negotiable / Will-DiscuDescription: Ark Marketing is an outsourcing company. We are lookingfor highly motivated goal oriented professionals to fill ourentry-level position. The candidates proving to be able to meet targetrequirements will be considered for managerial positions. YOUCONSISTENTLY DEMONSTRATE: Positive Attitude and Communication TeamOrientation Ability to Multitask Efficient Work Ethic Self-motivationand ability to work independently High energy/activity levels Drive forbusiness results and continuous learning Outstanding customer servicein a friendly, courteous manner Assessing customer needs and providingexpert advice about available products Training associates oncompany's productsLocal Address or City: 6 lansing SquareJob State/Province: OntarioJob Country: CanadaJob Zipcode/Postcode: L6Y2R9Details about Job ID# 1103Position: National Account ManagerJob category: SalesTarget: Mid Career (2+ years of experience)Salary: 80000.00 / YearlyDescription: Our Client, a major international truck tiremanufacturer, seeks an experienced Sales Professional to maintain andgrow revenues and relationships with trucking fleets throughout thearea of coverage. They seek someone currently residing in the greaterSt. Louis, MO area with Business to Business Sales experience thatwants to investigate a career selling products and services to thetrucking industry. This international industry leader is offeringexcellent benefits and career growth opportunities. Our firm hasassisted over 80 professionals to join their organization and lookforward to assisting you. JOB TITLE: National Account Manager (NAM) -Midwest Region. REPORTS TO: Midwest Region Fleet Manager OBJECTIVE: TheNAM manages relationships with existing and target fleet customerswithin assigned territory and is responsible for revenue growth andprofitability improvement of the contract fleet business. The NAM willcoordinate the account teams nationwide to collectively service our"Top 100" fleet customers. Time in territory divided betweenaccount management and account acquisition activities.EDUCATION/EXPERIENCE REQUIREMENTS: · A bachelor's degree along withthree to five years of field sales, sales management or relevantrelated experience is typically required. A Master's degree is aplus. · Mechanical aptitude or technical ability preferred. Basictruck tire and/or maintenance experience is a plus. Proven negotiation,interpersonal and communication skills are desired. · Effective atnegotiating fleet contracts and renewals. · Excellent presentationskills, account acquisition skills and closing skills. · Ability tofunction as a self-starter with considerable latitude of action.ESSENTIAL DUTIES AND RESPONSIBILITIES: · Responsible for revenuegrowth and profitability improvement of contract fleet business. ·Selling entire continuum of Programs, Services, Information andProducts (PSIP), including Total Outsourcing (TMS). · Managesbusiness relationships with our fleet customer's upper managementgroup. · Communicate fleet development plans to affected personneland dealers. · Coordinates training with Fleet Development Managers(FDMs) for fleet and dealer personnel on TTM and TMS processes. ·Maintain good understanding of financial model. · Understands who thecompetition is and what products and services they offer. · Capturesand continually updates fleet information into the Global CustomerManagement System (GCMS). · Understands resources that can providevalue to our fleet customers. · Maintains knowledge of transportationindustry and segment issues. · Maintains knowledge of tiremaintenance practices. · Coordinates the market teams to servicecontract fleets nationally. · Collaborate with marketing andfinancial sales support personnel to achieve our strategy. · Providementoring/expertise to FDMs in negotiating new and renewal fleetcontracts. · Prioritizes opportunities and then plans and schedulesactivities that match the investment to the payback. · Recognizes,isolates and solves problems that improve overall customer satisfactionand loyalty. TRAVEL REQUIREMENTS: Position will require travel on aregular basis, typically 80%%. Must be able to meet the travelrequirements of the job. Please contact: Gary Suhay Elite ResourcesGroup Fairlawn, Ohio 330-867-9412 search@elite-rg.comLocal Address or City: St. LouisJob State/Province: MissouriJob Country: United StatesJob Zipcode/Postcode: 63366Details about Job ID# 1102Position: Crystal Reports/SQL Server DeveloperJob category: Computers, Software Information TechnologyTarget: Mid Career (2+ years of experience)Salary: Market Rate / HourlyDescription: Greetings, Diverse Technical is currently looking for anexperienced SQL Server / Crystal Reports developer for an initial 3month contract. If you or someone you know is interested, please replywith your resume to jobs@diversetechnical.com with subject: Job Id2021DB. Further details are as follows: Job Type: Contract - 3 monthsLocation: Toronto - Downtown Rate: DOE Responsibilities: Design,develop and deploy Crystal Reports, Crystal Queries and CrystalAnalysis cubes. Develop and test ETL processes to source data fromexisting datamart. Provide support and mentoring to other team members.Technical Proficiency: Potential candidate must demonstrate very strongcommand of the following: SQL Server 2000 (including DTS) CrystalReports v10 Crystal Analysis v10 Crystal Query v10 ASP Please respondwith your resume to jobs@diversetechnical.com with subject: Job Id2021DB.Local Address or City: Toronto - DowntownJob State/Province: OntarioJob Country: CanadaJob Zipcode/Postcode: M4H1J5Details about Job ID# 1101Position: Supervisor - screw machine, rotary transfer, cncJob category: Management Manufacturing and ProductionTarget: Management (Manager/Director of Staff)Salary: 65,000 / YearlyDescription: Aerospace fittings manufacturer is searching for aproduction supervisor to manage their machining area. Interestedcandidates must have a strong understanding of cutting tools,production machining, planning, scheduling and leadership skills. Thisposition will manage 30 to 45 employees and is responsible forproductivity, problem solving and managing the departments dailyoperations. Past experience working in a production CNC, screw machine,rotary transfer and/or swiss CNC is strongly preferred. This is agrowing company that offers great career opportunities. This positionis open due to the promotion of an employee, placed by Medvec ResourcesGroup / MSK East. Our client has grown and has enjoyed increased salesfor their division. Strong benefits, compensation packages and careergrowth will be offered. This opportunity is with one of the Bostonareas top manufacturing companies. MUST HAVE: five years of experiencein supervision and a strong production machining technical background.Keywords relating to position: Supervisor, Production Supervisor,Manager, Management, Production Manager, Machining Manager, MachiningSupervisor, cnc machining, screw machine, screw machining, screwmachined tooling, screw machines, swiss cnc, swiss screw machines,swiss cnc turning, multi spindle, multispindle, multi spindled,multiple spindle, multi spindled, Acme Gridley, New Britain, Warner &Swasey, Cincinnati, Citizen, Index, Mazak, Miyano, Mori Seiki,Mori-Seiki, Star, Tsugami, Tornos, Tornos Deco, Tornos Bechler, CNCturning, Conomatic, Conematic, Davenport, Euroturn, Gildemeister,Greenlee, Schutte, Wickman, Hydromat, rotary transfer, kingsbury,kingsberry, escomatic Medvec Resources Group / MSK East is the Largest,Most Experienced Search Firm Specializing in Screw Machining Jobs,Screw Machine Job, Screw Machining Jobs, CNC Machining Jobs, SwissScrew Machining Jobs, CNC Swiss Jobs, CNCSwissJobs, Swiss CNC TurningJobs, High Volume Machining Jobs, High Volume Turning Jobs andPrecision Machining Jobs. www.MedvecResourcesGroup.comwww.MRGCareers.com MORE JOBS ~ MORE OFTEN Key words: Screw MachineJobs, Screw Machining Jobs, Precision Machining Jobs, PrecisionMachining Job, Cold Heading Jobs, Cold Heading Job, Swiss CNC Jobs,Swiss CNC Job, Swiss cnc Turning Jobs, Swiss CNC turning job, Cam screwmachines, Acme screw machines, Acme Gridley, Davenport screw machine,New Britain, Conomatic, Index, Gildemeister, Schutte, Euroturn, Tornos,Warner & Swasey, Greenlee, Brown & Sharpe screw machines, Wickman,Swiss Type CAM Screw Machines, Escomatic, Tornos, Bechler, Conomatic,Bridgeport, Bryant, Cincinnati, Traub, Peterman, Strohm, Swiss CNCLathes, Star, Citizen screw machines, Citizen Cincom, Tsugami,Hardinge, Tornos Deco, Nomura, Mazak, Mazatrol, Miyano screw machine,Mori Seiki, Nakamura, National Acme, Nomura, Okuma, Omni Turn,Peterman, Petermann, Schutte, Strohm, Swiss CNC lathes, Traub, Tsugamiscrew machine, Turrett, Collets, Ultramatic, Unigraphics, Warner &Swasey, Wasino, Wickman, single spindle, singlespindle, singlespindled, single-spindle, pneumatics, hydraulics, calipers, HMC, VMC,Pro-Engineer, Pro-E, production machining, high volume machining,precision machining, cnc machining, swiss machining, swiss CAMmachining, grinding, micromters, Emco, Escomatic, Transfer Machining,Hydromat, Kingsbury, Cone Blanchard, Rizmatic, Eubama, Tonshoff,Turmat, Wirth Et Gruffat, CNC Turning, Cincinnati, Mazak, Euroturnautomatic screw machine, Okuma, Mori Seiki, Waseno, Miyano, Hardinge,Fadal, Fanuc controls, Fusion, Gittings & Lewis, Automatic screwmachine, Screw machine, Multiple / multi spindle screw machine, Singlespindle screw machine, Swiss screw machine, Swiss CAM machine,Automatic bar machine, Rotary transfer machine, Trunion transfermachine, Inline transfer machine, Dial transfer machine, Slidingheadstock CNC, precision metals, Precision machining, Medicalmachining, Screw machining, CNC turning, Production machining, swisscam jobs, automotive, Fluid power, Hydraulics, screw machine jobs, Firearms, Electronic, Connectors, Colaz connectors, Fiber optic connectors,Rf connectors, Shafts bearing, Faucet, machine tool jobs, Plumbing,Medical, Bone screws dental inserts, Implants, spinal implants, Jobshop, Contract shop, Aerospace, Hose fittings, Valves, Lp gas controls,Grease fittings, Hand tools, Fasteners, Insert fasteners, ppap, fmea,apqp, 8D, ISO, QS, ISO9000, QS9000, ISO9001, AS9000, S9100, Mastercam,Autocad, Cad, Cam, Kanban, Kaizen, JIT, FDA, PLC, Six Sigma, SPC, TQM,cnc machining, Allen BradleyLocal Address or City: CantonJob State/Province: MassachusettsJob Country: United StatesDetails about Job ID# 1100Position: Swiss CNC Set Up Operators (Tsugami / Citizen / Star screwmachines)Job category: Engineering Installation, Maintenance and RepairManufacturing and Production Other Full-timeTarget: Mid Career (2+ years of experience)Salary: - / HourlyDescription: Salary: /hr - /hr. Located in sunny SouthernCalifornia, we have several clients in need of experienced Swiss CNCSet Up Operators. Qualified candidates must have at least 3 yearsexperience setting up and operating Swiss CNC screw machine tools suchas Tsugami, Citizen, and/or Star. Our clients prefer candidates who arelocal to the Los Angeles area, but will consider all qualifiedindividuals who are willing to cover his/her own relocation expenses.These companies are offering competitive wage and benefits packages.When applying, please refer to Job Code: LSI 2401. If you are anexperienced Swiss CNC Setup Operator, please email your resume alongwith a detailed list of the machines you are experienced with, in MSWord format to Lance Solak at: Lance@Lsijobs.com LSI ManufacturingSolutions is the USAs #1 firm staffing the Swiss CNC and Screw MachineIndustries Nationwide. NEW JOBS RECEIVED DAILY! Some terminologyrelated to LSI Manufacturing Solutions Industry: screw machines, screwmachine jobs, screw machining jobs, Swiss CNC screw machines, Swiss CNCscrew machine jobs, Swiss CNC screw machining jobs, Swiss CNC jobs, CNCSwiss screw machining jobs, Swiss screw machine jobs, Swiss screwmachining jobs, cnc jobs, CNC machining jobs, CNC machine jobs, SwissCAM jobs, Swiss CAM machining jobs, Swiss CAM screw machine tools,machine tool jobs, precision machining jobs, manufacturing jobs,engineering jobs, machining jobs, single spindled machines,multi-spindled machines, multiple spindled screw machines, automaticscrew machines, screw machining, CNC machining, precision machining,high volume machining, production machining, Swiss CNC screw machining,Swiss CAM machining, set up operator, machinist, screw machinist, SwissCNC screw machinist, cnc programmer, Swiss CNC programmer, Swiss CNCmanufacturing engineer, CNC Swiss process engineer, Swiss CNC fieldservice engineer, Swiss CNC applications engineer, Swiss CNCmaintenance technician, Swiss CNC leadman, Swiss CNC foreman, Swiss CNCsupervisor, Swiss CNC manager, Swiss CNC shop manager, rotary transfer,automated assembly, robotics, cold heading, cold forming, precisionmetals, fluid power, medical device manufacturing, automotivemanufacturing, aerospace manufacturing, military manufacturing,filtration device manufacturing, plastics manufacturing, injectionmolding, commercial components, consumer products, industrial. CHECKOUT WWW.LSIJOBS.COM FOR THE NEWEST AND HOTTEST JOBS AVAILABLENATIONWIDE IN THE SWISS CNC AND SCREW MACHINE INDUSTRIES!Local Address or City: Southern CAJob State/Province: CaliforniaJob Country: United StatesDetails about Job ID# 1099Position: Plant Manager (screw machines & high volume machining)Job category: Engineering Executive Management Manufacturing andProductionTarget: Management (Manager/Director of Staff)Salary: 000 - 000 / YearlyDescription: Salary: ,000 - ,000. Located in the NortheasternU.S., this high volume manufacturer specializing in medical,commercial, and automotive components, is searching for a new PlantManager, due to expanding operations. To be considered you must have aDegree, and have at least 10 years previous plant management experienceover multiple product lines. You must also have a strong knowledge ofengineering and process development on screw machines and Swiss CNCscrew machines, as well as extensive knowledge and experience withhandling daily operations, production scheduling, budgeting, and P&Lresponsibilities. This company is offering an excellent wage andbenefits package, along with relocation assistance if needed. Pleaseinclude a detailed list of the screw machines you are experienced with,when submitting your resume, and refer to Job Code: LSI 2398. If youmeet these qualifications, please email your resume in MS Word formatto Lance Solak at: Lance@Lsijobs.com LSI Manufacturing Solutions is theUSAs #1 firm staffing the Swiss CNC and Screw Machine IndustriesNationwide. NEW JOBS RECEIVED DAILY! CHECK OUT WWW.LSIJOBS.COM FOR THENEWEST AND HOTTEST JOBS AVAILABLE NATIONWIDE IN THE SWISS CNC AND SCREWMACHINE INDUSTRIES! Keywords related to LSI Manufacturing Solutionsindustry: Swiss CNC screw machining jobs, Swiss CNC jobs, cnc jobs,screw machine jobs, Swiss CAM jobs, precision machining jobs, machinetool jobs, Acme, Acme Gridley, Bechler, Bridgeport, Brown & Sharpe,Cincinnati, Citizen screw machines, Cone Blanchard, Conomatic,Davenport screw machines, Deco, Emco, Escomatic, Euroturn automaticscrew machines, Allen Bradley, Fadal, Fanuc controls, Gibbs, Giddings &Lewis, Gildemeister, Greenlee, Haas, Hanwha, Hardinge, Hitachi Seiki,Howa, Hurco, Hydromat, Index, Integrex, Kingsbury, Kitamura, Kummer,Makino, Matsuura, Mazak, Mazatrol, Miyano, Mori Seiki, Nakamura, NewBritain, Nomura, Okuma, Peterman, Sabre, Schutte, Star screw machines,Strohm, Swiss, Swiss CNC lathes, Swiss CNC mills, Tornos screwmachines, Tornos Bechler, Tornos Deco, Traub, Tsugami screw machines,Turret, Ultramatic, Unigraphics, Warner & Swasey, Wasino, Wenzel,Wickman, Accuturn, single spindle, single spindled, multi spindle,multispindled, multiple spindled screw machines, cold forming, coldheading, hydraulics, pneumatics, HMC, VMC, Pro-Engineer, Pro-E,production machining, cnc machining, Swiss CNC machining, precisionmachining, high volume machining, grinding, cnc turning centers, cncmachining centers, micrometers, estimator, capital equipment,president, vice president, general manager, business unit manager,plant manager, operations manager, manufacturing manager, manufacturingsupervisor, production manager, production supervisor, machine centersupervisor, engineering manager, director of engineering, foreman,leadman, manufacturing engineer, process engineer, estimating engineer,applications engineer, tooling engineer, field service engineer,controls engineer, maintenance manager, project manager, projectengineer, cnc programmer, setup, set up operator, machinist, salesmanager, sales engineer, quality manager, quality engineer, RFengineer, Lean manufacturing, continuous improvements, SPC, mastercam,autocad, cad, cam, Kaizen, kanban, Kan Ban, APICS, BSME, ASQE, APQP,FMEA, PFMEA, PPAP, JIT, 8D, EDM, FDA, GMP, GD&T, MRO, 5S, MRP, TPM,CMM, PLC, CNC controllers, Six Sigma, black belt, screw machine, screwmachines, screw machining, Swiss CNC, Swiss CAM, precision metals,rotary transfer, robotics, automated assembly, automation, fluid power,medical device manufacturing, automotive manufacturing, militarymanufacturing, aerospace manufacturing, commercial components,industrial.Local Address or City: Northeastern U.S.Job State/Province: Job Country: United States
PowerBASIC-FAQ, english issue
========================================================================== PowerBASIC.GER-FAQ for Versions 3.00, 3.10, 3.20 & 3.50 English Version (DOS) (c) 1995/2005 by Thomas Gohel, All Rights reserved! English Team: Thomas Geiger, Andras Hoeffken, Wolfgang Bruske Date: 29.09.2005 - Version 1.00 Tip's, Trick's, Bug's and some more or less important stuff========================================================================== ==================== Foreword to this FAQ ==================== The links listed within this FAQ are provided without concern about possible Copyright-Notices and without concern about any trademarks. Further, the Author does not quarantee that the problems, hints and bugs below are totally correct. Should you have suggestions to this FAQ, pleasce contact me. I am open to suggestions and will let them flow into future Versions of this FAQ. I would also like to point out that some of the 'Bugs' in the 'Bugs Section are only 'Bugs' in a matter of speech. Those mistakes or barriers are documented here for all to see (So that future Versions of PowerBASIC may be developed). =========== Suggestions =========== Suggestions may be presented to the Author of this FAQ at any time. Current Netmail-Addresses are: Thomas Gohel@2:2410/330.1 (FidoNet) pbfaq@gohel.de (InterNet) There is also the possibility to log into a Mailbox in which the Author of this FAQ is reachable: Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) You can post your suggestions and problems there. To do so, please write a Message in the PBSOUND-Message-Area. An answer should be available within 48 hours. ============================================ How to obtain the current PowerBASIC.GER-FAQ ============================================ The current PowerBASIC.GER-FAQ can be downloaded from my Home BBS online anytime. The phone numbers are: Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) Please switch to the 'PowerBASIC: FAQ'-Filearea after login. There are 16 more 'PowerBASIC-Fileareas': PowerBASIC: PBSOUND PowerBASIC: Sound Blaster PowerBASIC: FAQ PowerBASIC: Sourcen (allgemein) PowerBASIC: Sourcen (Deutschland) PowerBASIC: Sourcen (Netherlands) PowerBASIC: Toolkits (allgemein) PowerBASIC: Toolkits (Deutschland) PowerBASIC: Toolkits (Netherlands) PowerBASIC: Grafik (allgemein) PowerBASIC: Grafik (Deutschland) PowerBASIC: Grafik (Netherlands) PowerBASIC: DFUE, BBS und FidoNet Sourcen PowerBASIC: allgemeine Pakete und Info's PowerBASIC: Demos PowerBASIC: User Uploads / Incoming (Note: The PowerBASIC filebase is in german!) Many of the Sources and Toolboxes mentioned in this FAQ can be downloaded here online or using FidoNet Filerequest. InterNet-Users can get the PowerBASIC.GER-FAQ anytime using World Wide Web (WWW) under: - http://www.gohel.de A Request of this FAQ using FidoNet is possible using the Magic 'PBFAQ'! Port 1: +49-30-47300910 (PBSOUND HQ, Berlin - 64.0, ISDN, X75, V42B) Port 2: +49-30-47300910 (PBSOUND HQ, Berlin - 33.6, VFC, V34, FAX) Further PowerBASIC-Magics are: PBSOUND and PBFILES. ============== Complete Index ============== 1. Obtaining, Toolboxes, Prices and Infos about PowerBASIC 2. Errors/Inconsistencies in PowerBASIC-Versions 3.0, 3.1 and 3.2 3. PowerBASIC and the CoProcessor 4. Standardproblems 5. Hints in Connection with the InLine-Assembler 6. Hints in Connection with Pointers 7. Hints in Connection with Turbo-C or Borland C++ 8. Hints to the Conversion of Sources from PDS to PowerBASIC 3.x 9. Available Shareware & Public Domain Solutions 10. The People from PowerBASIC =========================================================== 1. Obtaining, Toolboxes, Prices and Infos about PowerBASIC =========================================================== 1.1. The Current Versions of PowerBASIC 1.2. The Original Distributors of PowerBASIC 1.3. German Speaking Area 1.4. German PowerBASIC Prices 1.5. Denmark, Norway, Sweden and Finland 1.6. New in Version 3.1 of PowerBASIC 1.7. New in Version 3.2 of PowerBASIC 1.8. New in Version 3.5 of PowerBASIC 1.9. PowerBASIC - The next Generation 1.1. The Current Versions of PowerBASIC --------------------------------------- The current Version of PowerBASIC in Germany (in January 1998) is Version 3.50. This Version has been available in the US and other countries since December 1997. 1.2. The Original Distributors of PowerBASIC -------------------------------------------- PowerBASIC was and is developed in the United States and there are multiple possibilites to get contact to these people. Here are the currently known addresses from PowerBASIC Inc.: Address: PowerBASIC, Inc. 1978 Tamiami Trail S.#200 Venice, FL 34293 Ordering : +1 (800) 780-7707 Service : +1 (941) 408-8700 Fax : +1 (941) 408-8820 InterNet: World Wide Web : www.powerbasic.com List of InterNet Sites : info@powerbasic.com Ordering : order@powerbasic.com Sales and Marketing : sales@powerbasic.com Technical Support : support@powerbasic.com Suggestions for future PowerBASIC Versions : suggest@powerbasic.com FTP- & WWW-Sites: http://pbsound.basicguru.com http://www.gohel.de http://www.xlsior.org http://www.basicguru.com http://www.uni-jena.de/~p6sepa/rshp.html http://home/t-online.de/home/mstadler/homepage.htm http://www.leo.org/pub/comp/platforms/pc/msdos/programming/pbasic/ http://www.fys.ruu.nl/~bergmann/basic.html http://www.zephyrsoftware.com http://www.blarg.net/~future/shareware.html http://www.cdrom.com/simtel.net/msdos/basic.html http://www.cyberbox.north.de/FILES/DOS/dos106.html ftp.global2000.net/pub/pbasic Newsgroups (english): alt.lang.powerbasic comp.lang.powerbasic| Newsgroups (german):| news.kannofant.de/de.comp.lang.powerbasic| Hote: Needs authentication with user/password (basic/basic)! 1.3. German Speaking Area ------------------------- In Germany PowerBASIC is distributed by "Kirschbaum Software GmbH". The current address is: Kirschbaum Software GmbH Kronau 15 83550 Emmering GERMANY Phone: +49-8067-9038-0 Fax : +49-8067-903898 The current Version of PowerBASIC is Version 3.50. Following Toolboxes are available from Kirschbaum: PB/DLL - PowerBASIC DLL-Compiler for Windows PowerGRAPH - for graphical Menu systems (PCX, Fonts, etc.) PowerISAM - Databases (also available in English from PowerBASIC Inc.) PowerTOOLS - SAA-Shell, Helpsystem, helpfull Routines PB/xtra - Collection of Shareware programs and Source code Kirschbaum does not have a Mailbox or any official EMail addresses! There are some EMail addresses and Support-Areas or unofficial Newsgroups etc. from the Toolbox Developers. In this case please see the Manual of the Toolbox. 1.4. German PowerBASIC Prices ----------------------------- All prices noted here are NOT validated. Changes can occur at any time! A currently valid pricing Information can be optained from Kirschbaum by FAX. Complete Version: 199,-DM Complete Version 3.5 for Students, Pupils: 150,-DM Update from VOBIS-Basisversion 2.10f to V3.5: 149,-DM Update from V2.10 to V3.5: 149,-DM Update from a 3.x-Version to V3.5: 36,80DM| 1.5. Denmark, Norway, Sweden and Finland| ----------------------------------------| In some european countries (incl. Germany and Austria) PowerBASIC is| distributed by:|| Berggreen Service| Lodsgaarden A 111| DK-2791 Dragoer| DENMARK| info@berggreen.dk| http://www.berggreen.dk 1.6. New in Version 3.1 of PowerBASIC ------------------------------------- - Userdefined Type- and Union-Variables can be compared directly. - Constants in Binary, Hex or Octal Format (&B, &H, &O) can be set to a specific Datatype, by simply adding the correct Identifier. Examples: A?? = &HFFFF?? '= 65535 B%% = &HFFFF%% '= -1 - Constants (%%Test) can have a 64-Bit Range (signed) from this PowerBASIC Version on. Examples: %%MaxNumber = 500000 %%Konst1 = &HFFFF '= -1 (Integer) %%Konst2 = &H0FFFF '= 65535 (Long) When using Binary, Hexdecimal or Octal Numbers, adding a proceeding Zero defines whether the calculated Value is signed or not. - BIN$, HEX$ and OCT$ can now calculate Values up to 32Bit Long- Integer. - From Version 3.1 on you can give alternative Names to SUBs or FUNCTIONs, with which you can call these Subroutines from within OBJ-Routines (compiled with Assembler or C). Example: SUB MySub ALIAS "_my_sub" (Var1%%,Var2$) PUBLIC PRINT "Hello", Var1%%, Var2$ END SUB - The keyword ANY in a definiton of a Procedure allows the passing of a parameter of any type. The parameter is then passed by REFERENCE as a 32Bit Address. To let the Programm know what kind of type it is you should pass a Type identification as the first parameter to the Procedure. When this Procedure is coded in PowerBASIC, the Inline- Assembler must be used to pass on the parameters. Example: i%% = 11 CALL TestAny(0,i%%) 'the free parameters must be Variables s$ = "Hello" CALL TestAny(1,s$) SUB TestAny(ParamType AS INTEGER, ANY) DIM Int.Param AS INTEGER DIM String.Param AS STRING SELECT CASE ParamType CASE 0 'Integer ! les bx, [bp+6] :Load Offset of Var. in BX ! mov ax, es:[bx] ;Load Value of Var. in AX ! mov Int.Param, ax ;Load Varibale to AX PRINT Int.Param CASE 1 'String ;Load Offset of Stringmarker ! les bx, [bp+6] ;into BX ! mov ax, es:[bx] ;Load Stringmarker into AX ! mov String.Param,AX PRINT String.Param END SELECT END SUB - The Return value of FUNCTIONs written with the Inline-Assembler can now be set without using a temporary Variable. The Keyword FUNCTION is used for this. Example: PRINT AsmTest(2) FUNCTION AsmTest(BYVAL int.param AS INTEGER) AS INTEGER ! mov ax, int.param ! inc ax ! mov FUNCTION, ax ;the Value will be returned END FUNCTION (Also see chapter 'Hints with the Inline-Assembler') - The use of FUNCTION instead of the Functionname is also possible with FUNCTIONs coded in BASIC. Example: PRINT FuTest(2) FUNCTION FuTest(BYVAL int.param AS INTEGER) AS INTEGER FUNCTION = int.param + 1 END FUNCTION - The Function FRE() was extended: FRE(-3) returns the free Space on the Stack FRE(-4) returns the maximum Length available for dynamic Strings, set using $STRING FRE(-5) returns the Number of used Stringsegments FRE(-6) returns the Number of unused Blocks in the current Stringsegment FRE(-7) returns the amount of unused Memory in the current Stringsegment 1.7. New in Version 3.2 of PowerBASIC ------------------------------------- - Data Pointers - Code Pointers Following Jumps can now be executed directly in BASIC: "CALL DWORD x", "GOTO DWORD x" ans "GOSUB DWORD x". In this case "x" is the 32Bit Pointer to a SUB/Function or the Label. (There is a DIR$- Demo to the new Pointer- Functions.) - 32-Bit implementation of: STRPTR32, VARPTR32 und CODEPTR32 - Pointer to Structures can now be passed on to a SUB/FUNCTION using the "BYVAL" Keyword. Example: DECLARE SUB MySUB(x AS INTEGER) DIM z AS INTEGER PTR z = &HB8000000 CALL MySUB(BYVAL z) - 16550 UART Support - The LEN() Function now also returns the length of User-defined Structures. - Labels ans Variables can now contain the so-calles Underlines '_' so that they can be kept appart easier. 1.8. New in Version 3.5 of PowerBASIC ------------------------------------- - some important Bugfixes - ASCIIZ strings: Dim xyz as Asciiz * 100. - Arrays as User Type Members, may have one or two static dimensions. - & operator is recognized for string concatenation. - STRING PTR is now legal as a Type/Union member. - $ELSEIF metastatement. - ASC(x$,n) function and statement offer an optional starting position. - REDIM PRESERVE of the outer bound of dynamic and huge arrays only. - RND() is a legal substitute for RND. - RND(x,y) returns a LONG INTEGER in the range of x -> y. - TRIM$() is a combination of LTRIM$() and RTRIM$(). - Indexed pointers: @xyz[2] - DIM VIRTUAL x(1000000) arrays in ems memory, may not be dynamic strings nor used as a ByRef parameter. - HUGE and VIRTUAL Arrays may use LONG INTEGER indexes. With this expansion, you may see a slight increase in the size of some code generation. When a segment is now very close to the 64k limit, it may require that $SEGMENT metastatements be moved. - ERRCLEAR statement resets the error flag to nul. - ERRCLEAR function returns ERR, then resets the error flag to nul. - ERRCLEAR is a synonym for the old function Errtest. - CVI(x$[,n]), CVL... offer an optional starting position in the string CVL(x$,3) would extract the 3rd through 6th bytes of x$, and convert the 4 bytes to the corresponding long integer value. In this case, x$ must be at least 6 bytes long. - SIZEOF(var) function returns the physical size of a variable, particularly useful for determining the maximum length of a fixed- length string, ASCIIZ string, or user-defined type. It always returns 2 for a dynamic string. - STDIN x, y$ reads up to x characters from the standard input device (which may be redirected), and assigns them to the string variable specified. If less than x characters are ready immediately, then a string shorter than x bytes is returned. - STDIN LINE, y$ reads one line of text from the standard input device (which may be redirected), and assigns them to the string variable specified. When enf-of-file is reached, a one-byte string consisting of a CHR$(26) is returned. - STDOUT x$ [;] outputs the string expression x$ to the standard output device (which may be redirected), followed by a cr/lf. If an optional trailing semi-colon is included, then the cr/lf is suppressed. - SETEOF #1 statement has been added to truncate an open file to its current position. - FRE(-11) returns the number of unallocated bytes of EMS memory. 1.9. PowerBASIC 4.0 - The next Generation / Wishlist ---------------------------------------------------- Such a short time before the release of V3.5 of the Compiler it is naturally very, very hard to find Points for improvement, but they do exist anyways. - XMS Support for VIRTUAL Arrays - SORT ARRAY Support fuer VIRTUAL Arrays - 32bit Inline-Assembler - Syntax Highlighting within the IDE - A better IDE ================================================================= 2. Errors/Inconsistencies in PowerBASIC Versions 3.0, 3.1 and 3.2 ================================================================= Shortindex: 2.0. PowerBASIC-Errorlibraries 2.1. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.0 2.2. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.1/3.2 2.3. No Overflow-Error with Doublewords 2.4. Crash of the PowerBASIC IDE and compiled EXE's while loading 2.5. EXEs of different size when compiling with PB/PBC 2.6. Different EXE-Files with same Compilation 2.7. Problems with the Mouse within the IDE 2.8. The Fixup Overflow Syndrome 2.9. The story with ASCII-154 after a Remark in the Inline-ASM 2.10. Error 454: END FUNCTION expected 2.11. Another REMARK-Problem with $ALIAS 2.12. The Mistake CDWRD in the german Online-Help 2.13. The Mistake CVDWRD in the german Online-Help 2.14. Crash when pressing CTRL-C 2.15. Error when producing Output with "CONS:" and CTRL-C 2.16. The Problem with Error 244 in a Stand Alone EXE 2.17. Problems with linking of multiple Lines of Source 2.18. Problems with the WATCH-Window and multidimensional Arrays 2.19. Buggy internal Function/Variable: pbvScrnCols 2.20. Incorrect internal Function/Variable: pbvHost 2.21. A little difference in the new Inline-Assembler of V3.1/3.2 2.22. The dd-Problem in PowerBASIC 3.1/3.2 2.23. Undocumented internal Variables in PowerBASIC 3.0/3.1/3.2 2.24. The PRINT-Bug in PowerBASIC 3.2 2.25. The "File not found"-Error after using NAME 2.26. Calculationerror when using Constants 2.27. Wrong "Bit Movement" with ROTATE 2.28. Overflow when using FOR/NEXT-Loops 2.29. Overflow when using STEP -1 in FOR/NEXT-Loops 2.30. The Bug in the VARPTR32 Command 2.31. The "KEY ON" Bug 2.32. Crash of the PowerBASIC IDE in the Pick- Menu 2.33. Crash of the PowerBASIC IDE with faulty Syntax 2.34. Error when swapping variables using SWAP 2.35. The Multiplexer Interrupt Error in the REG-Command 2.36. Contents of a Directory will be deleted with KILL 2.37. The thing with the "USR" string 2.38. Runtimeerror in the PowerBASIC Helpcompiler 2.39. The Bug "Truncatig" in the PowerBASIC Helpcompiler 2.40. Crash of the PowerBASIC-IDE after calling its own Help 2.0. PowerBASIC-Errorlibraries ------------------------------ For better Security of your own programs I would recommend that you link all Errorlibraries. This is the only way to make sure that PowerBASIC shows a correct Error and not an unexplainable Error at: SELECT CASE pbvrevision You can remove all Errorlibraries in the finished program, because they are only needed in development. The $ERROR-Libraries can be linked within the IDE or directly in your Source. The Settings in the Source are used above the Settings in the IDE! The $ERROR-Libraries are linked as follows: $ERROR NUMERIC ON $ERROR OVERFLOW ON $ERROR BOUNDS ON $ERROR STACK ON Note: Some of the Bugs shown here can only be found with these Libraries linked! 2.1. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.0 --------------------------------------------------- Versions: 3.0 Known : partly removed in version 3.10 The problems shown here only apply to the use of unsigned variables and are shown with variables of type WORD: Example 1: Demo?? = &hA000 causes an Overflow, because PowerBASIC interprets this as a signed variable. This error can be solved by using a real number. Similar effects can occur with the $NUMERIC-System when using the REG()-Command: Example 2: Demo?? = REG(1) can, under special circumstances, cause an Overflow, too, if the passed value would be negative as INTEGER. This error can be solved, if only using variables of type INTEGER with REG(), by removing the NUMERIC-Library when compiling It would be much better though to trash the old BASIC-Crap and do the whole thing in InLine-Assembler right away! :-) It is also interesting to see the 'floating' of error with deactivated $ERROR NUMERIC library. The error occurs some later time in the program, strangely at variables of type WORD, too. Even stranger that you can at best see this at internal PowerBASIC variables of type WORD. Another Overflow effect is hidden behind the PowerBASIC-Functions STRSEG/STRPTR, VARSEG/VARPTR, CODESEG/CODEPTR. Unlike REG(1) the variables MUST be of type WORD, else an Overflow can occur in bigger programs. 2.2. The NUMERIC/OVERFLOW-Problem in PowerBASIC 3.1/3.2 ------------------------------------------------------- Versions: 3.1/3.2 Known : Correction recommended at PowerBASIC Inc. One shouldn't think that a new version lets the old bugs be forgotten ;-). Example 1: Demo?? = &hA000 can still cause an Overflow. This can't be demonstrated in one line anymore, because it sometimes still occurs in very complex programs. This still has not changed with version 3.20. Unlike version 3.00 this bug can be passed by using definite unsigned variables: Demo?? = &h0A000 Should you be Toolbox-Developer and want to make sure that your sources work under PowerBASIC 3.0 then enter the following lines: ! mov ax, &hA000 ! mov Demo??, ax Example 2: Demo?? = REG(1) does not cause an Overflow anymore, as far as I know, but you can't be sure about that. But one should still use variables of type INTEGER when using REG. Many PowerBASIC-Functions work better now, others still cause trouble. this affects some special routines which are only set for INTEGER variables, but still work with variables of type WORD. The Overflow problem with STRSEG/STRPTR, VARSEG/VAROTR and CODESEG/ CODEPTR is still existing. 2.3. No OVERFLOW-Error with Doublewords ---------------------------------------- Versions: 3.0/3.1/3.2/3.5 Known : Yes There is no internal Overflow test for Variables of type Doubleword. You can test this with a little example. Example: i??? = -1 PRINT i??? The cause for this problem lies within the Intel CPU itsself, because there is no Overflow created that the Compiler could test for. 2.4. Crash of the PowerBASIC IDE and compiled EXE's while loading ----------------------------------------------------------------- Versions: 3.0/3.1 (3.2 not tested) Known : No (partly) A Crash of the IDE while loading occurs rather rarely and can usually be traced back to one of the following: - QEMM Memorymanagementsystem (up to Version 7.03) - extremly low ammount of free Low Dos Memory - You have tried to load the IDE with the LOADHIGH-Command - 4DOS In most cases the IDE will return to the Commandline with a graphical Error (Cursor within the IDE) while loading. Also struck with this effect are all compiled PowerBASIC-EXE Files. If you want to get around this effect at any cost, you will have to compress the PowerBASIC-EXE with an EXE-Packer like PKLITE. 2.5. EXEs of different size when compiling with PB/PBC ------------------------------------------------------ This isn't really a Bug, because there is only a small difference in the cause of the IDE-Compiler and the Commandlinecompiler, which explains the differently sized EXE-Files. The IDE always compiles the EXE-File with the Settings in the IDE, meaning that if you don't want to compile the VGA-Lib into it, you set it in the IDE. The PBC always compiles the VGA-Lib into it, IF you haven't declared it differently with a Metastatement. The Metastatements are always taken before the IDE-Settings! 2.6. Different EXE-Files with same Compilation ---------------------------------------------- Versions: 3.0/3.1 Known : Seems so A nice effect can be reported, when you compile Sources more than once and then compare them with a Filecompare-Utility. If your free Memory has changed, the created EXE-Files will be different. As far as I see it, the two PowerBASIC Compilers save some Information about the system they were compiled on, which are of Integer/Word type and are at the Offset's &h9C/&hA0. (PB3.1) This effect can be shown as well in the PB-IDE as with PBC. Some say that PB-EXE-Files which were compiled under a PowerBASIC- Shell with PBC seem to crash more often. But even since I have been compiling all of my projects like this for two years, I can not approve to this effect. Version 3.0 of the PowerBASIC-Compiler SHELL seemed to cause other effects with big EXE- Files. The problems were solved back then by using an alternativ PBSHELL-Command. 2.7 Problems with the Mouse within the IDE ------------------------------------------- Versions: 3.0 Known : Seems corrected in Version 3.1 Should you work with a Mouse in the IDE, so that you can insert and cut Sorucecode easily, this could cause a partial crash when marking long texts which go past the right screen border. Furthermore the Mouse cursor does not mark the text correctly. There also seem to be some problems when using the Mouse in the 80*43/50 Mode. 2.8. The Fixup Overflow Syndrome -------------------------------- Versions: 3.0/3.1/3.2 Known : Correction demanded at PowerBASIC Inc. This is my favorite Bug, since it is actually caused by a real error in the programming of a PowerBASIC- User. The description in the Manual, as well as in the Online-Help is slightly irritating, but principally correct. Personally I would decribe the Bug like this: PowerBASIC could not find the named Jumpaddress. A possible cause for this is a SHORT-Jump to a Label not in the valid Area for a SHORT- Jump. Please check all Jumpcommands for validity. There is a small Bug in this Errormessage in both PowerBASIC Versions. But since the human mind will not really believe what is written there, the Source is compiled again (without change). The IDE crashes for doing that immediately. I will save myself a closer description of the working of the different Assemblercommands, especially the different ways of addressing in relation to the CPU. There are many Assemblerbooks out there, and they are something really needed for good programming with the Inline-Assembler anyways. 2.9. The story with ASCII-154 after a REMARK in the Inline-Assembler -------------------------------------------------------------------- Versions: 3.0/3.1/3.2 Known : Error corrected in Version 3.50 There is a nice little thing that can drive you crazy when doing good commenting in the Inline-Assembler Source. It's the story with the ASCII-154 after a REMARK (REM or ; ): Example: CLS PRINT "1" ! nop ; Ue 0 THEN PRINT "CoProcessor " + CHR$(pbvnpx+48) + "87 found!" PRINT PRINT "Shoulod the CoProcessor be turned of for next"; PRINT "measure (Y/N)?" BEEP A$ = UCASE$(INPUT$(1)) IF A$ = "Y" THEN CoPro "AUS" ELSE PRINT "no CoProcessor found!" PRINT PRINT "Should the CoProcessor be turned on for the next"; PRINT "measure (Y/N)?" PRINT PRINT "Note: Turning on a not existing CoProcessor"; PRINT "will cause a crash!" BEEP A$ = UCASE$(INPUT$(1)) IF A$ = "Y" THEN CoPro "EIN" END IF PRINT GOSUB HoleZeitKonstanten GOSUB MesseFORNEXT GOSUB MesseIFTHEN GOSUB MesseSELECTCASE GOSUB MesseMATHEMATIK GOSUB MesseSTRING GOSUB MesseNUMPRINT GOSUB MesseSTRPRINT PRINT END '*********************************************** ' Get the Timeconstants for the different tests '*********************************************** HoleZeitKonstanten: PRINT "Messung der Zeitkonstanten "; t1! = TIMER FOR i& = 1 TO 2000 ' Time for 2000-Loops NEXT i& t2! = TIMER Zc4! = t2! - t1! PRINT "."; t1! = TIMER FOR i& = 1 TO 5000000 ' Time for 5-Mio-Loops NEXT i& t2! = TIMER Zc1! = t2! - t1! PRINT "."; t1! = TIMER FOR i& = 1 TO 100000 ' Time for 100000-Loops NEXT i& t2! = TIMER Zc3! = t2! - t1! PRINT "." t1! = TIMER FOR i& = 1 TO 2000000 ' Time for 2-Mio-Loops NEXT i& t2! = TIMER Zc2! = t2! - t1! RETURN MesseFORNEXT: PRINT "Testing FOR/NEXT : "; t1! = TIMER FOR i& = 1 TO 5000000 'Get 5-Millions-Loop NEXT i& 'i = long integer t2! = TIMER PRINT t2! - t1!; "sec " RETURN MesseIFTHEN: PRINT "Testing IF/THEN : "; t1! = TIMER FOR i& = 1 TO 5000000 IF a%% = 0 THEN 'IF THEN Method ELSEIF a%% = 2 THEN ELSE END IF NEXT i& t2! = TIMER PRINT t2! - t1! - Zc1!; "sec " RETURN MesseSELECTCASE: PRINT "Testing SELECT CASE: "; t1! = TIMER FOR i& = 1 TO 2000000 SELECT CASE A%% 'SELECT CASE Method CASE 0 CASE 1 CASE ELSE END SELECT NEXT i& t2! = TIMER PRINT t2! - t1! - Zc2!; "sec " RETURN MesseMATHEMATIK: PRINT "Testing MATHEMATIC : "; t1! = TIMER FOR i& = 1 TO 2000000 i%% = i%% + 100 'extremly simple Calculations e& = e& * 2 e& = e& \ 2 i%% = i%% - 100 NEXT i& t2! = TIMER PRINT t2! - t1! - Zc2!; "sec " RETURN MesseSTRING: PRINT "Testing STRING's : "; t1! = TIMER FOR i& = 1 TO 2000 A$ = STRING$(20000, 32) A$ = RIGHT$(A$, 10000) + "Test" e%% = INSTR(A$, "Test") A$ = "" NEXT i& t2! = TIMER PRINT t2! - t1! - Zc4!; "sec " RETURN MesseNUMPRINT: PRINT "Testing NUM-PRINT's "; t1! = TIMER FOR i& = 1 TO 100000 LOCATE , 1 PRINT "Testing NUM-PRINT's: "; i&; NEXT i& t2! = TIMER LOCATE , 20 PRINT t2! - t1! - Zc3!; "sec " RETURN MesseSTRPRINT: PRINT "Testing $$$-PRINT's "; t1! = TIMER FOR i& = 1 TO 100000 LOCATE , 1 PRINT "Testing $$$-PRINT's: "; NEXT i& t2! = TIMER LOCATE , 20 PRINT t2! - t1! - Zc3!; "sec " RETURN '********************************************** ' Here is a routine to turn off the CoProcessor '********************************************** SUB Copro(Switch$) SELECT CASE UCASE$(Switch$) CASE "AUS", "OFF", "-" ! mov ax, &h0040 ! mov es, ax ! mov ax, word ptr es:[&h10] ! and ax, &b1111111111111101 ! mov word ptr es:[&h10], ax CASE "EIN", "ON", "+" ! mov ax, &h0040 ! mov es, ax ! mov ax, word ptr es:[&h10] ! or ax, &b0000000000000010 ! mov word ptr es:[&h10], ax END SELECT END SUB =================== 4. Standardproblems =================== 4.1. Compatability between the PBUs and LIBs of the 3.x Versions 4.2. Not enough memory in the PowerBASIC-IDE 4.3. Finding out the filename and path to the filename 4.4. No free memory with ENVIRON$ 4.5. No Returnerrorlevel with SHELL 4.6. Cutting files 4.7. Error 502/514 when using C-OBJ-Files 4.8. Preventing a Warmboot with CTRL-ALT-DEL 4.9. Opening more than 15 Files with PowerBASIC and/or DOS 4.10. HEX$-DWORD Routine for PowerBASIC 3.1/3.2 4.1. Compatability between the PBUs and LIBs of the 3.x Versions ---------------------------------------------------------------- Other than the PowerBASIC-Update from V2.10 to 3.00, the PBU/LIBs of the 3.x Versions are downwards compatible. That means that you can continue to use an under PowerBASIC 3.0 developed PBU/LIB under the two higher PowerBASIC Versions. But you can't use a PowerBASIC 3.1 PBU/ LIB with any of the older Versions. There are probably some differences between the Versions 3.0-3,1 because of the new Number- System when exchanging sourcecode. In that case please read the Chapter 'Errors ...'. 4.2. Not enough memory in the PowerBASIC-IDE -------------------------------------------- There is a Tool by Bob Zale himself which activates parts of the VGA- Graphic-RAM and the parts of the monochrome Herculescard for PowerBASIC. The Tool 'PBPLUS96' (96kByte more RAM) was written for PowerBASIC Version 2.00, but still works with Version 3.10. 4.3. Finding out the filename and the path to the filename ---------------------------------------------------------- We often stand in front of the problem that we can start our program over a path command, but that it can't find its own data and INI-Files anymore after that. The solution is quite simple: DOS saves this information in the PSP or in its Environmentblock. --- Cut -------------------------------------------------------------- '********************************************************************* ' ' Finding the path and filename of the current program in ' PowerBASIC 3.0/3.2 ' ' von Thomas Gohel ' '********************************************************************* $COMPILE EXE ! mov ax, &h6200 ! int &h21 ! mov es, bx ! mov ax, word ptr es:[&h2C] ! mov pbvDefSeg, ax ; undocumented in PowerBASIC 3.0 FOR i%% = 0 TO 1024 IF PEEK$(i%%, 4) = CHR$(0,0,1,0) THEN EXIT FOR NEXT i%% WHILE PEEK(i%% + 4) 0 Temp$ = Temp$ + CHR$(PEEK(i%% + 4)) i%% = i%% + 1 WEND DEF SEG FOR i%%=LEN(Temp$) TO 1 STEP -1 IF RIGHT$(MID$(Temp$,1,i%%),1) = "\" THEN EXIT FOR NEXT i%% ExeDir$ = MID$(Temp$,1,i%%) ExeName$ = MID$(Temp$,i%%+1) PRINT ExeDir$; " "; ExeName$ --- Cut End ---------------------------------------------------------- 4.4. No free memory with ENVIRON$ --------------------------------- This chapter is partly documented in the manuals, but I want to give some advanced tips, because this subject often causes misunderstandig. The structure of the environmentblock in connection with the Program Segment Prefix (PSP) is not documented further, but it is of enourmous meaning gor the better understanding of this error. Shortly said, you can only modify the existing environent, and not add any new entries!! You can use three ways if you want to add entries anyways: a) Delete part of the environment and then add the new entry or first create a Dummy-Environmententry and the delete or modify it using the ENVIRON-Command. b) When you want to start a DOS-SHELL with an information: OldEnv$ = ENVIRON$("PROMPT") SHELL "COMMAND.COM /K SET PROMPT=PowerBASIC " + OldEnv$ The trick with this is that when you call a SHELL a new PSP will be created and the memory will be allocated correctly. c) Get the address of the PSP, get the pointer to the current Environmentblock and then read the environment into a string, where it can be modified. The allocate a DOS-Memoryblock using INT21, save the modified environment therem abd the set the pointer to the Environmentblock within the PSP to the new one. (Also see: Already available PD-Solutions) 4.5. No Returnerrorlevel with SHELL ----------------------------------- You often need to check the Errorcode of an ended program in a SHELL- Command. This is not possible directly under PowerBASIC, because PowerBASIC runs a program using COMMAND.COM and because of that the Errorcode can't be returned (This is a problem of MS-DOS!!). Example: SHELL "C:\DOS\COMMAND.COM /C MEINDEMO.EXE" To solve this problem there is for instance an alternative SHELL- Command in form of a FUNCTION (as Sourcecode): --- Cut --------------------------------------------------------------- '********************************************************************** ' ' Errorlevel in PowerBASIC 3.0/3.2 ' ' by Thomas Gohel (after a pattern from PDS, by Bernd Hohmann) ' '*********************************************************************** $COMPILE EXE DECLARE FUNCTION PBShell%% (FileName$) CLS PRINT PRINT "Fehlercode ist: "; PBShell%%("c:\dos\command.com") END FUNCTION PBShell%% (FileName$) LOCAL Dummy%% Datei$ = FileName$ ' Copy filename. Datei$ = LTRIM$(Datei$) ' Trim filename. i%% = INSTR(Datei$, " ") ' Pass Command ? IF i%% > 0 THEN ' Cmd$ = MID$(Datei$, i%%) ' Cut Command Datei$ = LEFT$(Datei$, i%% - 1) ' Cut filename END IF ' Datei$ = UCASE$(Datei$) i%% = INSTR(Datei$, ".") ' Is a dot in it ? IF i%% > 0 THEN ' Ext$ = MID$(Datei$, i%%) ' Get extension ELSE ' Ext$ = "" ' Extension is empty END IF ' SELECT CASE Ext$ ' Test extension. CASE ".BAT" ' Batch over COMMAND.COM Cmd$ = "/C " + Datei$ + " " + Cmd$ Datei$ = ENVIRON$("COMSPEC") CASE ".COM" ' Free CASE ".EXE" ' Free CASE ELSE ' No Extension, Datei$ = Datei$ + ".EXE" ' Add .EXE. END SELECT ' Datei$ = Datei$ + CHR$(0) ' Create ASCII-String. dNul$ = CHR$(0) + CHR$(0) ' Doublezero for Parameterblock nul$ = SPACE$(127) ' Save 127 bytes for Strings MemFree& = SETMEM(0) ' Get free space x& = SETMEM(-MemFree&) ' Free all memory ' nul$ = "" ' restore 127 Bytes. IF Cmd$ > "" THEN ' Commandline ? CmdLen$ = CHR$(LEN(Cmd$)) ' Length of Cmd$ as String Cmd$ = CmdLen$ + Cmd$ + CHR$(13) ' Length + Cmd$ + '13' segm$ = MKI$(STRSEG(Cmd$)) ' Single parts of the ' Parameter-Block Offs$ = MKI$(STRPTR(Cmd$)) ' Add ( MID$(....) ' = segm$ doesn't work) Param$ = dNul$ + Offs$ + segm$ ' Create Parameterblock. ELSE ' Cmd$ = CHR$(13) ' Start of Bug-Fixed segm$ = MKI$(STRSEG(Cmd$)) ' Segment of Terminator Offs$ = MKI$(STRPTR(Cmd$)) ' Offset -"- Param$ = dNul$ + Offs$ + segm$ ' Create Parameterblock. END IF ' End of Bugfixed DateiSeg%% = STRSEG(Datei$) ' Get addresses DateiOff%% = STRPTR(Datei$) ParamSeg%% = STRSEG(Param$) ParamOff%% = STRPTR(Param$) ! push ds ; Save DS ! mov ax, &h4B00 ; EXEC-Funktion 4Bh / INT 21h ! mov es, ParamSeg%% ; Segment of Parameterblock ! mov bx, ParamOff%% ; Offset of Parameterblock ! mov dx, DateiOff%% ; Offset of Filename ! mov ds, DateiSeg%% ; Segment of Filename ! int &h21 ; Interrupt &h21 ! pop ds ! jc ExecError ! jmp ExecOk ExecError: ! mov Dummy%%, ax SELECT CASE Dummy%% ' Evaluate Error. CASE 1 : PRINT "illegal Function call!" CASE 2,3 : PRINT "File not found: " + FileName$ CASE 4 : PRINT "to many files opened" CASE 5 : PRINT "Access denied " + Filename$ CASE 8 : PRINT "Not enough free memory for " + FileName$ CASE 10 : PRINT "wrong Environmentblock" CASE 11 : PRINT "wrong Format" CASE ELSE: PRINT "Problem while executing " + FileName$ END SELECT ExecOk: Mem2& = SETMEM(MemFree&) ' Completely free memory. IF MemFree& Mem2& THEN ' Free memory changed PRINT "Warning: possibly a TSR was installed!!" END IF ! mov ah, &h4d ; Get Exit-Code ! int &h21 ; Interrupt &h21 ! mov Dummy%%, al PBShell%% = Dummy%% ! mov ah, &h03 ; Pass current cursor ! mov bh, &h00 ; position ! int &h10 ; Interrupt &h10 ! inc dh ; Recalc to basis of 1 ! inc dl ! mov NewZeile?, dh ! mov NewSpalte?, dl LOCATE NewZeile?, NewSpalte? ' Set cursor END FUNCTION - Cut End ------------------------------------------------------------- Further on your can modify the COMSPEC-Variable in your environment and directly run your program with COMMAND.COM. Example: Comspec$ = ENVIRON$("COMSPEC") 'Save COMSPEC ENVIRON "COMSPEC=MEINDEMO.EXE" SHELL 'Execution of MEINDEMO.EXE ENVIRON "COMSPEC="+Comspec$ 'Restore COMSPEC Always remember, that the SHELL-Function always transfers the Parameter '/C' to the executing program, if you want to transfer Commandlineparamters yourself. 4.6. Cutting files ------------------ You often stand in front of the problem that you have cleaned your datafile, but it is still too big. In this case this small but effective trick helps: Example: OPEN "DEMO.DAT" FOR BINARY AS #1 SEEK #1, 20 PUT$ #1, "" CLOSE #1 Shortens the file 'DEMO.DAT' to a length of 20 Bytes. 4.7. Error 502/514 when using C-OBJ-Files ----------------------------------------- When using C-OBJ-Files you should take care that there not multiple Statements for the Datasegment in it, because PowerBASIC only supports one Datasegment per OBJ-File. Since there is no solution known to me and there seems to be none from PowerBASIC, it seems that it is your only choice to adapt your C- Source. 4.8. Preventing a Warmboot with CTRL-ALT-DEL -------------------------------------------- The following Source prevents a possible Warmboot: Example: KEY 15, CHR$(&h0C, &h53, &h73) ON KEY(15) GOSUB NoBoot KEY(15) ON DO IF INKEY$ "" THEN EXIT LOOP LOOP PRINT "Done!" END NoBoot: PRINT "Warmboot not wanted!!" RETURN 4.9. Opening more than 15 Files with PowerBASIC and/or DOS ---------------------------------------------------------- You often seem to come to the limits of PowerBASIC when you want to open more than 15 Files. But this is not a problem of the Compiler, but a genetic birth error of MS-DOS. I'll have to bring up some of the dark sides of DOS in order to describe this effect, baecause this is where we find the answer. Many of you know that when a file is opened, a handle is returned from DOS. Now where does DOS save this handle an the information belonging to that handle? To many of you PSP (Program Segment Prefix) is a well known statement (already described shortly in the finding of the filename). If not, you shoud better not read the following explanations and just test the source. This PSP also contains a table, which was declared reserved by Microsoft, but its use is widely known. This table is called 'Job File Table' (short JFT) and is located at Offset 18Hex from DOS 2.0 on and is a 20 fields long BYTE-Array. When you now subtract the used handles for: NUL, $CLOCK, CON, AUX and PRN, what is left over are the magic 15 usable handles. But it is only job of the JFT to manage a pointer to the 'System File Table', short SFT. The SFT on the other hand is a structure similar to a MCB (Memory Control Block), which manages important data like Startclusters and Sharingattributes. A SFT of this kind can only hold a limited amount of handles, to raise this you have to include a higher amount with FILES in your CONFIG.SYS. After a restart of the system MS-DOS reserves more MCBs marked as SFT. Now you can theoretically open more than 20 Files, because the default numbe of FILES is '8'. Unluckily we come to another limited number of entries in the JFT within the PSP. There is a solution from MS-DOS 3.3 on, because the Interrupt &h21, function &h67 enables you to raise the amount of usable handles. But how is this done when the space in the PSP is limited?? Therefore we remember some of the undocumented fields within the PSP. Offset &h32 has become interresting, because this holds the new size of the JFT in WORD. After that there is the new pointer to the Extended JFT. Interrestinf is, that the new array is an array of WORD. Theoretically 65535 handles can be managed like that, but that is hypothetically, because the SFT can only handle 255 entries. Actually there are two important things when creating a new JFT: - The new JFT needs memory, that means that you have to decrease the size if the current programs Heap! - Ab extended JFT will not be passed to a Childprogram with SHELL/ EXECUTE! The 15 Files Border still exists for the Childprogram. Ok, but now here is the Source: '*********************************************************************** ' ' Set the Amount of uasable Handles in PowerBASIC 3.2 ' ' developed by Th.Gohel Fido: 2:2410/301.12 ' InterNet: support@pbsound.snafu.de ' Homepage: http://www.snafu.de/~pbsound/ ' '*********************************************************************** MaxFiles%% = 30 ' Same as FILES = 30 PBFiles MaxFiles%% ' Set the amount of usable Files FOR i%% = 1 TO MaxFiles%% ' Test all usable Files PRINT "Opening File: PBFILES." + STR$(i%%) OPEN "PBFILES." + STR$(i%%) FOR BINARY AS i%% PUT$ i%%, "Testfile" + STR$(i%%) + " for PBFILES, please delete!" NEXT i%% FOR i%% = 1 TO MaxFiles%% ' and close again CLOSE i%% NEXT i%% SUB PBFiles(BYVAL MoreFiles%%) x& = SETMEM(-255) ' Should be enough for all cases ! mov ah, &h67 ; Set amount of usable Handles ! mov bx, MoreFiles%% ; ! add bx, 6 ; The Standard-Handles for PB ! int &h21 ! jnc PBFiles_Ok PRINT "Error while creating the usable Handles!!" PBFiles_Ok: END SUB 4.10. HEX$-DWORD Routine for PowerBASIC 3.1/3.2 ----------------------------------------------- The following routine should make HEX$-Support possible for variables of type DWORD, which is missing for some reason. Example: d??? = &h1234ABCD PRINT DHex$(d???) FUNCTION DHex(HexDWord???) AS STRING DIM Lo AS WORD DIM Hi AS WORD ! les bx, [bp+6] ! mov ax, es:[bx+0] ! mov Lo??, ax ! mov ax, es:[bx+2] ! mov Hi??, ax DHex = RIGHT$("000" + HEX$(Hi??), 4) + RIGHT$("000" + _ HEX$(Lo??), 4) END FUNCTION ================================================ 5. Hints in connection with the Inline-Assembler ================================================ Shortindex: 5.1. Principles of the function of the Inline-Assembler 5.2. Assembler Syntax Error 5.3. Faulty passing of Variables in the Inline-Assembler 5.4. Problems with LDS/LES 5.5. Crash after calling own INT-Functions 5.6. Fixup Overflow 5.7. Dividing Variables from WORD to BYTE 5.8. Dividing Variables from DWORD to WORD 5.9. Access to Arrays / Structures with the Inline-Assembler 5.10. Parameter return with the Inline-Assembler 5.11. Parameter return in Interrupt-Procedures 5.12. Creating 32bit-Pointers 5.13. Converting from REG to Inline-ASM 5.14. Converting from A86 to Inline-ASM The tips shown here are not a tutorial in Inline-Assembler, but may help solve many beginner mistakes. A more detailes description of the interactions will not be written here, if it does not belong to the problem itself. 5.1. Principles of the function of the Inline-Assembler ------------------------------------------------------- The PowerBASIC Inline-Assembler contains the functions of the Intel 8086 CPU. This means that you may have to adapt the Inline-Assembler- Code of other High-Language-Compilers or true Assembler-Code to the PowerBASIC Inline-Assembler, because they quite often contain 80286 commands. Usually the following commands have to be converted: Source - > PowerBASIC shr ax, 2 ! shr ax, 1 ! shr ax, 1 or like this: ----------------------------------------------------------- shl ax, 3 ! push cx ! mov cl, 3 ! shl ax, cl ! pop cx ----------------------------------------------------------- pusha ! push ax ! push bx and so on until all registers are saved ----------------------------------------------------------- popa analog, only restore registers 5.2. Assembler Syntax Error --------------------------- When we forget the 'true' Syntax Errors, which usually occurs when you are not quite used to Assemblercommands, there still is an 'obvious' Syntax Error which can be marked by the Inline-Assembler of PowerBASIC. This is the case when the Compiler can't use a Variable in the Inline-Assembler because it isn't defined in any way. PowerBASIC usually creates used Variables within true BASIC-Source by itself and allocates memory for it. You have to do that yourself within the Inline-Assembler. Example: ! mov ax, Demo%% This causes a Syntax Error because the Compiler can't do anything with the Variable 'Demo%%'. You should first set the Variable to a value: Demo%% = 1 ! mov ax, Demo%% Now the Compiler accepts the Assemblerline. You don't have to assign a value to a Variable every time, a simple DIM or SHARED, PUBLIC, LOCAL etc. is enough and initialises 'Demo%%'. 5.3. Faulty passing of Variables in the Inline-Assembler -------------------------------------------------------- You probably often swore around because a working routine with REG(x) didn't work crrectly after conversion to the Inline-Assembler or when your Testroutine wouldn't do its job in a SUB/FUNCTION. The solution is relatively simple: You have to pass the variables to the Inline-Assembler BYVAL. Example: Demo 1 FUNCTION Demo(BYVAL i%%) public ! mov ax, i%% ! inc ax ! mov i%%, ax PRINT i%% END FUNCTION This little Demo simply adds the value '1' using the Inline-Assembler and then prints it on the screen. Simply leave out the BYVAL and then test the Demo again! 5.4. Problems with LDS/LES -------------------------- Compareable to the passing of the parameters is the function of the commands LDS/LES. It is also essential whether a variable is passed 'BY COPY', 'BY REFERENCE' or 'BY VALUE'. The followingcan be taken as rule of thumb: BY REFERENCE: - default in the main program - or when a variable is declared SHARED/PUBILC etc. BY COPY: - default in a SUB/FUNCTION, if the variables aren't passed BY VALUE. BY VALUE: - always interpreted by the Inline-Assembler as BY VALUE You should only pass variables of type BY COPY to LDS/LES, because only then the DS/ES Segmentaddresses will be loaded and the Offsetaddresses into the other Registers. When passing BY REFERENCE DS/ES will be loaded with the high value contents of the variable, if of type Long/DWord, else the DS/ES Register will contain an irrelevant value. The other Registers will contain the low value of the variable. Example: SHARED DemoSeg%%, DemoOff%% i& = &h12345678 Demo1 i& Demo2 i& Demo3 i& FUNCTION Demo1(i&) public PRINT "PB-Adresse : ";: PRINT HEX$(VARSEG(i&));":"; HEX$(VARPTR(i&)) END FUNCTION FUNCTION Demo2(i&) public ! les bx, i& ! mov DemoSeg%%, es ! mov DemoOff%%, bx PRINT "LES /BY COPY : ";: PRINT HEX$(DemoSeg%%);":"; HEX$(DemoOff%%) END FUNCTION FUNCTION Demo3(BYVAL i&) public ! les bx, i& ! mov DemoSeg%%, es ! mov DemoOff%%, bx PRINT "LES /BY VALUE: ";: PRINT HEX$(DemoSeg%%);":"; HEX$(DemoOff%%) END FUNCTION 5.5. Crash after calling own INT-Functions ------------------------------------------ You will ask yourself: Why this section in the FAQ? Does the PowerBASIC Inline-Assembler have any Bugs? The answer is definetly: NO. But many calls using INT-Functions of the BIOS/DOS are connected to some trouble, because they change important Segments or specially address them. Many buffers that have to be passed to a function look for their pointer in the Datasegment-Register (DS). PowerBASIC also addresses its variables using DS, so that conflicts are 'programmed' here. It should not be like this, for example: ! mov ax, &h3D90 ; Function File open ! mov ds, FileSeg?? ; Load segment of Filename, ! mov dx, FileOff?? ; First error, because FileOff?? ; can't be addressed using DS. DS ; is already pointing somewhere else. ! int &h21 ; INT-Call ! mov Handle%%, ax ; Because DS still points to nowhere ; for PowerBASIC, this is wrong, too, ; and PowerBASIC will crash sooner or ; later. A clean listing should look like this: ! push ds ; Save DS ! mov ax, &h3D90 ! mov dx, FileOff?? ; Load Offset of Filename ! mov ds, fileSeg?? ; Load Segment of Filename, not needed ; by PowerBASIC anymore ! int &h21 ; INT-Call ! pop ds ; Restore PowerBASIC Segment ! mov Handle%%, ax ; Save Handle%% (Or Errorcode) ! jnc ... ; Check Carry-Flag 5.6. Fixup Overflow ------------------- The problem is relatively easy and simple: The 8086 CPU only allows jumps of type SHORT, meaning that you can only jump to labels within -127/+128 OpCodes directly. The following example also creates such an error: DemoLabel: ! jc DemoLabel To get around this, you'll just have to address the whole thing a little different. This is principally no problem once you know it: DemoLabel: ! jnc DemoWeiter ! jmp near DemoLabel DemoWeiter: But this can be found in any good Assembler book... 5.7. Dividing variables from WORD to BYTE ----------------------------------------- Should you still turn your 16bit variables into its 8bit parts with mathematical work, it is time to finally stop it! The CPU can do it by itsself: Example: DIM Demo AS WORD DIM DemoHigh AS BYTE DIM DemoLow AS BYTE Demo?? = &H1234 ! mov ax, Demo?? ! mov DemoLow? , al ! mov DemoHigh?, ah 5.8. Dividing variables frob DWORD to WORD ------------------------------------------ More often you have the problem that you have pointers of type DWORD in PowerBASIC, but you don't know how to pass them to the Inline- Assembler or turn them into WORD. Principally this is quite simple (When you know how): Example: DIM Demo AS DWORD DIM DemoHigh AS WORD DIM DemoLow AS WORD Demo??? = &H12345678 ! mov ax, Demo???[00] ! mov bx, Demo???[02] ! mov DemoLow??, ax ! mov DemoHigh??, bx 5.9. Access to Arrays / Structures with the Inline-Assembler ------------------------------------------------------------- Access to static Datastructures is relatively easy with the Inline- Assembler if you already know the correct Offsetaddresses. PowerBASIC allows the following Syntax: Example: ! mov ah, byte ptr es:[di][22] This copies the value to Offset 22 of the address ES:DI into the AH- Register. 5.10. Parameter return with the Inline-Assembler ----------------------------------------------- In opposite to true Assembler the return of a variable works slightly different in the PowerBASIC Inline-Assemble. PowerBASIC 3.0 for example does not allow the direct return from the Inline-Assembler to the FUNCTION, this is only possible with a little trick. Example: High%% = &h1234 Low%% = &h4578 PRINT HEX$(Demo1&(High%%, Low%%)) FUNCTION Demo1&(BYVAL High%%, BYVAL Low%%) LOCAL Dummy& ! mov dx, High%% ! mov ax, Low%% ! mov Dummy&[02], dx ! mov Dummy&[00], ax Demo1& = Dummy& END FUNCTION From PowerBASIC 3.1 on you can directly pass the return value to the FUNCTION, only with 32bit (and bigger) values have to be passed using a little trick: Example: High%% = &h1234 Low%% = &h4578 PRINT HEX$(Demo2&(High%%, Low%%)) FUNCTION Demo2&(BYVAL High%%, BYVAL Low%%) ! mov dx, High%% ! mov ax, Low%% ! mov FUNCTION[02], dx ! mov FUNCTION[00], ax END FUNCTION 5.11. Parameter return in Interrupt-Procedures --------------------------------------------- Very hard is the passing of variables from within an own Interruptroutine, because you can guess that the Datasegment isn't the same as the one used by PowerBASIC. But the developers of PowerBASIC have left us a big back door here. The addressing using the Codesegment, which is usually the same! Yet this trick only works with the Inline-Assembler, to pass from/ to true PowerBASIC-Routines you will have to recopy this variable. Example: ! mov ax, &h1234 ! mov Demo, ax ! mov bx, Demo ! retn Demo: ! dw 0 Should you look at this thing with a Debugger, you will notice that PowerBASIC will add the Prefix &h2E (addressing using the Codesegment) in front of the access to the variable and the '!dw 0' field will hold the value &H1234. 5.12. Creating 32Bit-Pointers ----------------------------- Often 32Bit Pointers are needed for some Interrupt-Procedures to call old Interrupt-Handlers or Devicedrivers like CTVDSK/CT-VOICE and HIMEM/ MSCDEX. Because the creation of a 32Bit Pointer was described in a previous Chapter, here is the actual Syntax: Example: ! jmp dword Demo& ! jmp dword ptr Demo& ! call dword Demo& ! call dword ptr Demo& The pointers can also be taken from the Codesegment! 5.13. Converting from REG to Inline-Assembler --------------------------------------------- The conversion from REG- to Inline-Assemblersources is also relatively simple. Instrad of the REG-Command, which buffers the Contents of the Processorregisters in an internal REG-Array, an access over the Inline- Assembler causes a direct manipulation of the Processorregister. The REG-Command passes the REG-Values when CALL INTERRUPT is executed. Please not this difference and you will have not as many problems. You can translate all other commands 1:1: Example: REG 1, &h12345 -> ! mov ax, &h1234 REG 2, &hFF -> ! mov bl, &hFF REG 3, &h22 * 256 -> ! mov ch, &h22 REG 4, &hAABB -> ! mov dh, &hAA ! mov dl, &hBB REG 9, Demo%% -> ! mov es, Demo%% CALL INTERRUPT &h21 -> ! int &h21 Low?? = REG(1) AND 255 -> ! mov low??, al High?? = REG(1) \ 256 -> ! mov High??, ah 5.14. Converting from A86 to Inline-Assembler --------------------------------------------- Usually a translation of A86-Sources can be done without problems. Remove the Stackborder and include the Assemblerlines into the Inline- Assembler. It will be best ig you create a FUNCTION call that passes the variables BYVAL, the rest is done by PowerBASIC. ======================================= 6. Hints for Pointers in PowerBASIC 3.2 ======================================= Shortindex: 6.1. Pointers in general 6.2. What are pointers, and what are they for? 6.3. PowerBASIC-Pointers and dynamic strings 6.4. PowerBASIC-Pointers and fixed length strings 6.5. PowerBASIC-Pointer and FLEX-Strings 6.6. PowerBASIC-Pointer and TYPE structures 6.7. A little Demonstration (source) 6.1. Pointers in general ------------------------ Pointers in BASIC have been the cause for many discussions so far. PowerBASICS's Dynamic Memory-Managment has been an argument why Pointers in BASIC (if not impossible) don't make any sense. The following paragraphs will show that this is wrong. Dynamic Memory- Managment (which by the way is a real advantage of this language) and pointers are a possible combination. For the understanding of the follwing, knowledge of the interna of BASIC and DOS helps a lot 6.2. What are pointers, and what are they for ? ----------------------------------------------- Pointers do what their name says: they point. They allow interpreting every single byte of your computers memory up to 1 Megabyte. All you have to do is to assign any memory adress to the pointer. Pointers are useful to get to areas of the memory that are outside of PowerBASIC's Dynamic-Memory- Managment and they let you directly get hold of the Pointers that are given back by some DOS-Functions like: - Directory Table Area - Drive Parameter Block - DOS Info Block - PSP - Environment Block - and and and ... With pointers you can forget all those tiresome "old friends" like DEF SEG/POKE/PEEK or DEF SEG = PEEKI(...)! 6.3. PowerBASIC-Pointers and dynamic strings -------------------------------------------- String-Pointers to dynamic strings are defined in PowerBASIC with: DIM Pointer AS STRING PTR The Pointer is assigned as follows Pointer = VARPTR32(Demo1$) Example: '*************************************************************** ' ' Demosource showing how to handle pointers and dynamic strings ' '*************************************************************** DIM Pointer1 AS STRING PTR ' defining string pointer for ' dynamic strings Pointer1 = VARPTR32(Demo1$) ' assign the pointer CLS PRINT "Adress: Demo1$: Pointer1:" Demo1$ = "123456" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 Demo1$ = "654321" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 Demo1$ = "!Test!" PRINT HEX$(VARPTR32(Demo1$)), Demo1$, @Pointer1 6.4. PowerBASIC-Pointers and fixed length strings ------------------------------------------------- String-Pointers to fixed strings are defined in PowerBASIC with: DIM Demo AS STRING * 6 DIM Pointer AS STRING PTR * 6 The Pointer is assigned as follows Pointer = VARPTR32(Demo$) Example: '*************************************************************** ' ' Demo showing how to handle pointers and fixed length strings ' '*************************************************************** DIM Demo2 AS STRING * 6 ' define string with fixed length DIM Pointer2 AS STRING PTR * 6 ' define Pointer with fixed length Pointer2 = VARPTR32(Demo2$) ' assign the pointer PRINT PRINT PRINT "Adress: Demo2$: Pointer2:" Demo2$ = "123456" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 Demo2$ = "654321" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 Demo2$ = "!Test!" PRINT HEX$(VARPTR32(Demo2$)), Demo2$, @Pointer2 6.5. PowerBASIC-Pointer and FLEX-Strings ---------------------------------------- String-Pointers to FLEX-Strings are defined in PowerBASIC with: DIM Demo AS FLEX DIM Pointer AS FLEX PTR The Pointer is assigned as follows Pointer1 = VARPTR32(Demo1$) To use FLEX-Strings you have to use MAP before assigning the Pointer!! Example: '*************************************************************** ' ' Demosource showing how to handle pointers and FLEX-Strings ' '*************************************************************** DIM Demo3 AS FLEX ' define string as FLEX! DIM Pointer AS FLEX PTR ' define pointer as FLEX PTR! MAP Demo3$$ * 10 ' FLEXCHR$ = "." Pointer = VARPTR32(Demo3$$) ' assign the pointer PRINT PRINT PRINT "Adress: Demo3$$: Pointer:" Demo3$$ = "123456" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer Demo3$$ = "654321" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer Demo3$$ = "!Test!" PRINT HEX$(VARPTR32(Demo3$$)), Demo3$$, @Pointer 6.6. PowerBASIC-Pointer and TYPE structures ------------------------------------------- String-Pointers to TYPE structures are defined in PowerBASIC with: TYPE Demo4_Struc ' define TYPE Demo5 AS BYTE Demo6 AS BYTE END TYPE The Pointer is assigned as follows DIM TypeDemo AS SHARED Demo4_Struc PTR You will find an example of pointers and TYPE structures in the following Source. 6.7. A little Demonstration (source) ------------------------------------ '************************************************************************ ' ' Handling the Video Ram with pointers in PowerBASIC 3.2 ' ' (c) Thomas Gohel ' ' A little demonstration that pointers have really no(!!) problem with ' the internal memory-managment. For the successful use of Pointers you ' need very good knowledge of the interna of PowerBASIC. ' ' This demo abuses the video-ram as storage for strings and shows how ' PRINT commands modify the contents of the two pointers VIDEORAM and ' ZEICHEN. ' ' This routine can be used for fast saving and restoring of the complete ' video-ram: ' ' @Videoram.Page2 = @Videoram.Page1 ' ' will save the complete content of the first (Video)page to the second ' page for later restauration. ' '************************************************************************ TYPE Zeichen_Struc ' TYPE of a single sign Wert AS BYTE Farbe AS BYTE END TYPE TYPE Screen_Struc ' TYPE for pages of the video ram Page1 AS STRING * 4096 ' page 1 Page2 AS STRING * 4096 ' page 2 Page3 AS STRING * 4096 ' page 3 Page4 AS STRING * 4096 ' page 4 END TYPE DIM Zeichen AS SHARED Zeichen_Struc PTR ' define the TYPE-structur DIM Videoram AS SHARED Screen_Struc PTR ' as pointers Videoram = pbvScrnBuff ' Move TYPE-structur to the Be- ' ginning of the video ram. ' PowerBASIC is using/handling ' video ram as fixed memory for ' strings now! :-))) Zeichen = pbvScrnBuff ' TYPE-Structur is to use the ' same memory-areas as PRINT ' and VIDEORAM SCREEN 0 ' set screen-mode CLS ' clear screen PRINT "Dies ist ein Test" ' normal PRINT on the ' screen A$=INPUT$(1) PRINT LEFT$(@Videoram.Page1,34) ' show that the PRINT-command ' has filled our structur ' too !! A$=INPUT$(1) @Videoram.Page2 = @Videoram.Page1 ' save page1 to page2 @Zeichen.Wert = 76 ' now ZEICHEN is filled with ' a value. At the same time ' the change ist shown on the @Zeichen.Farbe = 14 ' screen and VIDEORAM is ' modified too ! PRINT LEFT$(@Videoram.Page1,34) A$=INPUT$(1) @Videoram.Page1 = @Videoram.Page2 ' restore page1 frome page2 Pointer_Speed_Test: PRINT STRING$(25*80,178); ' filling the screen LOCATE 1, 14 COLOR 11, 1 PRINT " -= STRING-Manipulation inside the"; PRINT " Video RAM ! =- " @Videoram.Page2 = @Videoram.Page1 COLOR 14, 1 LOCATE 8,20: PRINT "+----------------------------------------+" FOR i%% = 9 TO 18 LOCATE i%%, 20 PRINT "| |" NEXT i%% LOCATE 10, 22: PRINT " Video RAM is handled as string" LOCATE 11, 22: PRINT " " LOCATE 13, 22: PRINT " -= Demo for the PowerBASIC-FAQ =- " LOCATE 19, 20 PRINT "+----------------------------------------+" @Videoram.Page3 = @Videoram.Page1 FOR i%% = 1 to 1000 @Videoram.Page1 = @Videoram.Page2 @Videoram.Page1 = @Videoram.Page3 NEXT i%% FOR i%% = 1 TO 10 FOR Durchlauf%% = 1 TO 256 Zeichen = pbvScrnBuff FOR Offset%% = 1 TO 2048 IF @Zeichen.Wert > 32 THEN DECR @Zeichen.Wert END IF Zeichen = Zeichen + 2 NEXT Offset%% NEXT Druchlauf%% @Videoram.Page1 = @Videoram.Page3 NEXT i%% '************************************************************************ =================================================== 7. Hints in Connection with Turbo-C or Borland C++ =================================================== Short overview: 7.1. The author 7.2. Why write/use external routines for PB3 in C 7.3. The correct memory model 7.4. Limitations by the PowerBASIC 3.x compiler/-linker 7.5. Passing Parameters 7.6. PowerBasic example 7.7. Corresponding C module 7.8. The assembler code, corresponding to the C module 7.9. Usage of routines from external C libraries 7.10. Preparations if PB V2.1 is used 7.1. The author --------------- The hints for "PowerBASIC in cooperation with C compilers like Turbo-C or Borland C++ have been contributed to This FAQ by: Andras Hoeffken Andras Hoeffken Andras Hoeffken Very useful hints can also be found in the file CTOPB.FAQ contained in the original PB Vs. 3.2 distribution. 7.2. Why write/use external routines for PB3 in C ------------------------------------------------- - C routines produce fast running code - for extremely fast code: first write a C source, then let the C Compiler translate this source to ASM code (is done much faster as if one would write ASM code directly, see example), finally optimize the ASM code - Routines from external C libraries can be used with PB 7.3. The correct memory model ----------------------------- For the generation of *.EXE files (e.g. by MASM or C + LINK) different memory models can be selected, e.g. Tiny, Small, Medium, Compact, Large, Huge, ... For the *.EXE files, generated by PowerBASIC, the following is valid only: PowerBASIC 3.x - memory model = LARGE (PB uses 32-bit FAR pointers for both code- and datasegments) The Borland C compiler in his menu: Options / Compiler / Code Generation / Model has therefore to be set to the LARGE model. 7.4. Limitations by the PowerBASIC 3.x compiler/-linker ------------------------------------------------------- a) The PB3 linker can only link .OBJ modules, which have ONE data segment, with a 2nd data segment or a DGROUP the PB3 linker refuses work and produces Errors. - C compilers in their default set-up always use several data segment names, which are combined i a DGROUP (this has certain advantages). For the cooperation with PB, the IDE of the C-Compilers in its menu: Options / Compiler / Names must therefore be set up like: Code Segment: _TEXT Bss Segment: _DATA Code Group: Bss Group: Code Class: TEXT Bss Class: DATA Data Segment: _DATA Far Data Segment: Data Group: Far Data Group: Data Class: DATA Far Data Class: (the stars, originally present, MUST be erased!) Now, the C compiler produces only ONE data segment name and no more a DGROUP ! b) The PB3 linker ( 0 */ { stdata = (char far *) MK_FP(*stseg, *stofs); /* fetch the pointer */ if (stdata) /* if we have a valid string */ *stdata = '*'; /* replace first character */ } /* (do NOT overwrite the string length !) */ } --- Cut End -------------------------------------------------------- 7.8. The assembler code, corresponding to the C module ------------------------------------------------------ If someone is uncertain about the code, produced by the C compiler: get the corresponding ASM code and look, how compact and fast the C generated code is. To get the ASM code, shown below, first the above module PB3_TBC.C was compiled to PB3_TBC.OBJ (with the set-up of par. 7.4 !!), then with a disassembler for .OBJ-Files (OBJ2ASM.EXE) the following file PB3_TBC.ASM was gained. (You can instead order the IDE of the C compiler to produce equivalent ASM code, too. But with an external .OBJ disassembler, you are quite better sure, what the PB3_TBC.OBJ module really contains) --- Cut ------------------------------------------------------------ ;File PB3_TBC.ASM (disassembled from PB3_TBC.OBJ) _TEXT SEGMENT BYTE PUBLIC 'CODE' _TEXT ENDS _DATA SEGMENT WORD PUBLIC 'DATA' ;attention: no BSS segment, no DGROUP !! _DATA ENDS PUBLIC _addab PUBLIC _chst _TEXT SEGMENT assume cs: _TEXT assume ds: _DATA _addab: push bp mov bp,sp ; c = a + b: les bx,dword ptr [bp+006h] ; a mov ax,es:[bx] add ax,[bp+00Ah] ; + b les bx,dword ptr [bp+00Ch] mov es:[bx],ax ; c ;e = c + d: mov ax,es:[bx] ;c (line can be put out for optimization) add ax,$S1 ; + d mov dx,seg _DATA mov es,dx mov es:$S2,ax ; e ;return e: mov ax,seg _DATA ; (line can be put out for optimization) mov es,ax ; (line can be put out for optimization) mov ax,es:$S2 ; ax = e pop bp retf _chst: push bp mov bp,sp sub sp,+004h les bx,dword ptr [bp+00Eh] ; len(a$) cmp word ptr es:[bx],+000h ; nul? jz $L3 ; yes les bx,dword ptr [bp+006h] ; strseg(a$) - segment mov ax,es:[bx] les bx,dword ptr [bp+00Ah] ; strptr(a$) - offset mov dx,es:[bx] mov [bp-002h],ax ; own pointer mov [bp-004h],dx mov ax,[bp-004h] or ax,[bp-002h] ; pointer = 0? jz $L3 ; yes les bx,dword ptr [bp-004h] ; points to first string char mov byte ptr es:[bx],2Ah ; overwrite char with '*' $L3: mov sp,bp pop bp retf _TEXT ENDS _DATA SEGMENT $S1 dw 00001h ; initialized data $S2 dw 00000h ; uninitialized data (here NOT in the ; BSS segment!) _DATA ENDS END --- Cut End -------------------------------------------------------- 7.9. Usage of routines from external C libraries ------------------------------------------------ Although PB v3.x is much better adapted to C conventions than PB v2.1, it's mostly still NOT possible to immediately link .OBJ modules, corresponding to the normal C standard. Reason: C generates more than one data segment together with a DGROUP. To overcome this, one has to use C or ASM source code and to re-compile/re-assemble these sources with corresponding to the aspects of par. 7.3 and 7.4a. There are 2 possibilities: - With Borland C++ for the most runtime libraries the complete source code is delivered with the standard distribution including instructions, how to change the sources, and including MAKE files to re-generate own versions of the library modules. - If for an .OBJ module no source code is available, it's mostly possible with small modules to get the corresponding ASM source code by using an .OBJ-disassembler. Then, after having adapted the definitions of the data segments correctly to the PB3 conventions, it can be re-assembled again. 7.10. Preparations if PB V2.1 is used ------------------------------------- The difference between PB v3.x and PB v2.1 is like follows: PB v2.1 does not know a "$ALIAS" instruction. AS PB v2.1 can not work with "_" (underscores), in the IDE of the C compiler additional switches have to be changed: - with segment names (see par 7.4a) "_" are not allowed - in the menu "Options / Compiler / Advanced Code Generation" one has to deactivate the switch "Generate underbars". PB v2.1 does not know the CDECL instruction. One therefore has to put instructions into the C source code, that the C functions have to be compiled corresponding to the PASCAL-conventions (this corresponds to the PB-convention). For this, e.g in the example of par 7.6 and 7.7, the following (changed) lines have to be used: DECLARE FUNCTION addab (a, BYVAL b, c) DECLARE SUB chst (word, word, integer) int pascal addab(int far *a, int b, int far *c) void pascal chst(unsigned far *stseg, unsigned far *stofs, int far *stlen) ================================================================ 8. Hints about conversion of Sources from PDS to PowerBASIC 3.x ================================================================ (from Mark Junker@2:2437/47.21 / mjs@prg.hannover.sgh-net.de) Generally you can say that PDS-Sources can be converted into PB3- Sources. Exceptions are Sources which access foreign libraries and use of dimensioned elements in a TYPE-Structure. So, the following does not allow a conversion: - Foreign libraries (like VESA-LIB and everything else there is out there...) - Dimensioned elements in a TYPE-Structure Example: TYPE tTest TestElement1 AS LONG TestElement2(2 to 7) AS INTEGER TestElement3 AS LONG END TYPE - There may be no COMMON, but all variants of the COMMON SHARED- Command are allowed. Exception: - When COMMON is used to pass parameters to a file called by CHAIN. - When it is irrelevant that the variables behind the COMMON are available in all procedures. - Arrays with more than 8 Dimensions - REDIM PRESERVE is not flexible enough yet - More than 16 Parameters when calling a procedure When all of these things are not implemented, then the following things have to be changed while converting: Basic PDS: |PowerBASIC 3: ---------------------------------+--------------------------------------- SSEG |STRSEG SADD |STRPTR SSEGADD |STRPTR32 |STRPTR32 is only availble from PB3.2 on VARSEG/VARPTR |IMPORTANT: PB3 passes UNSIGNED values, |PDS passes SIGNED values. |This can be changed using $OPTION |SIGNED OFF. ---------------------------------+--------------------------------------- Offset of a file opened with OPEN|PB starts every file, you choose, starts with '1'! |at Zero (Standard) or at one. This can |be changed with the following command: |OPTION BINARY BASE 1 |for the start at '1' ---------------------------------+--------------------------------------- DIM SHARED VarName%% |This command can be converted in |two ways: |- DIM VarName%% | SHARED VarName%% |- DIM VarName AS SHARED INTEGER ---------------------------------+--------------------------------------- SHARED VarName() AS STRING*3 |Here we have the problem with Strings |of fixed length, when they can't be |SHARED in the main program. |You may not make any Type-statements |('AS xxx') after SHARED. | SHARED VarName as string | will become: SHARED VarName$ | or: SHARED VarName :'in SUBs ! | |You can SHARE FIXED-LENGTH-STRING-Arrays |like this: |DIM VarName(MIN,DimNum) AS STRING*3 |or |DIM VarName(MAX,DimNum) AS STRING*3 |where 'DimNum' is the number of |Dimensions of the Array and the number |must be entered in the program directly. ---------------------------------+--------------------------------------- COMMON SHARED /Block/ VarN%% |All three variants of the COMMON- COMMON SHARED VarN%% |command must be replaced in the main |program using PUBLIC and in the external |module (under PB: UNIT) using an EXTERNAL |You have to watch that the variable names |MUST be identifyable, and without a Type. |All Type-Structures 'AS xxx' are not |valid in PB3. |Die Block-statement (/Block/) is not |needed, because everything is not |chained to the name. (->Incompatibility!) ---------------------------------+--------------------------------------- COMMON VarN%% |Can only be converted if the variable |after the COMMON will be passed to a |program started with the CHAIN-Command, |or the COMMON could be a COMMON SHARED |i.E. |It is not allowed to use Type-statements |('AS xxx'), like with the COMMON SHARED. |All Type-statements must be removed ---------------------------------+--------------------------------------- '$INCLUDE: 'filename.ext' |$INCLUDE "filename.ext" '$DYNAMIC |$DYNAMIC '$STATIC |$STATIC ---------------------------------+--------------------------------------- CONST VarName$ = "xyz" |The variable must be replaced in the CONST VarName# = 1.23 |whole program with the specified value. CONST VarName! = 1.23 | CONST VarName@ = 1.23 | ---------------------------------+--------------------------------------- CONST VarName%% = 123 |Becomes CONST VarName& = 123 |%%VarName = 123 both times. |If a Constant-Name is used twice, |with different Datatypes, one of the |two must be replaced in the entire |source with 'VarName%%' or 'VarName&'. ---------------------------------+--------------------------------------- IF x THEN : ' Test |In PB only the ':' has to be something |removed and it will be compiled without END IF |problems. ---------------------------------+--------------------------------------- DIM x AS STRING*3 |This FIXED-LENGTH-STRING can not be CALL Test(x) |passed to a procedure without END |problems, because PB needs a VARIABLE- SUB Test(x$) |LENGTH-STRING or instead of the 'x$' an END SUB |'x AS STRING * 3' in the SUB-Header. |You have to use a temporary way over a |temporary String: ---------------------------------+--------------------------------------- It would be idle to write a converter for the Constants-Conversion, because this would be the main part when converting big projects. At the same time you can of course do the stuff with the COMMON SHAREDs and the DIM SHAREDs and of course with the META-Statements, as well as SSEG/SADD/SSEGADD. When interrupt calls are made with a CALL INTERRUPT or CALL INTERRUPTX, then you can rebuild the Routine 'INTERRUPTX' in the InLine-Assembler and then convert all calls of 'INTERRUPT' to 'INTERRUPTX' or directly do it in the InLine-Assembler or you can use the PowerBASIC 'CALL INTERRUPT'- Routine, where you will have to convert all register statements... ================================================ 9. Available Shareware & Public Domain Solutions ================================================ There are many more Toolboxes, but I just want to present you a few of the most important. 9.1. PBSOUND for PowerBASIC 3.0/3.2 9.2. HiVGA for PowerBASIC 2.1/3.2 9.3. PBVISION/PRO for PowerBASIC 3.x 9.4. PBCompress for PowerBASIC 3.1 9.5. Personal Protocol/Communication Library for PowerBASIC 9.6. POW! - Sound Blaster Toolkit 9.7. PBGUI Toolkit for PowerBASIC 3.0 9.8. PBWizard 9.9. SVGA for PowerBASIC 9.10. MAXLIB for PowerBASIC v1.2 9.11. DWDOOR for PowerBASIC 3.x 9.12. Special-Power / Spezialtools for PowerBASIC 2.1/3.0 9.13. BWSB - Bells, Whistles and Sound Boards 9.14. Public Domain Sourcen from german programmers 9.15. Public Domain Sourcen welche oft benötigt werden 9.1. PBSOUND for PowerBASIC 3.0/3.2 ----------------------------------- Language: German / English Author : Thomas Gohel| Version : v1.90 Price : 40,-DM/80,-DM / / (privat/commercial) Supply : PowerBASIC filearea: PBSOUND Fido-Request with Magic 'PBSOUND' at 2:2410/330 (33.6 & ISDN) InterNet: http://www.snafu.de/~pbsound/ File : PBSOUND.ZIP (v1.80) The recommended Operatingsystem for PBSOUND for PowerBASIC is MS-DOS in the Versions 5.0, 6.x, 7.0 or MS-Windows 95. Features: - support all Creative Labs Sound Blaster models, SB16 and SB32AWE incl. Upgradeboards such as WaveBlaster I+II and Roland SoundCanvas SCD10/15 - supports the internal PC-Speaker - playback from MIDI- and VOC-Files in the background and within the IDE - no size limits with VOC-files - playback/recording up to 44100, Stereo and 16bit with a SB16 or SB32AWE - support the SBPro/SB16 mixers - Speechsynthesis with SBTALKER.EXE - Online-Help for the PowerBASIC-IDE - PBPLAY, MIDI/VOC-player tool - PBREC, VOC-recording tool - PBSPEAK, VOC/WAV player for speaker - PBW2V, VOCWAV conversion program - with PBSOUND-library & EXE conception! - You can now create executable PowerBASIC files up to 4GigaByte with PBSOUND! - demo & introductoryprogram - complete with INSTALL & SETUP-Program - with source: to programming the CT-VOICE.DRV & the SBPro mixerchip 9.2. HiVGA for PowerBASIC 2.1/3.2 --------------------------------- Language: German / English Author : Matthaeus Stadler Version : v2.0 Price : 40,-DM Supply : PowerBASIC filearea: Toolkits (Deutschland) Fido-Request with Magic 'PBHIVGA' at 2:2410/330 (33.6 & ISDN) InterNet: http://www.snafu.de/~pbsound/ File : HIVGA20B.ZIP Features: - fast graphic routines for standard VGA, SVGA and VESA 256-, 32k and 65k colors, automatic VGA Adapter recognition. - basic graphic routines, splitscreen, scrolling, floodfill, GetImg, SetImg, sprite routines, bitmap scaling. - loads and saves PCX-, Targa-, HVS-files. - linking of bitmaps to the program .exe file. - mouse routines for all modes, scalable text, fading, color- cycling, color definition. - up to 4 pages in 320*200, several pages up to 1600*1200. - including user defined fonts (until 16x32) - possible usage of free VGA memory for graphics. - no functional restrictions in shareware version. - demo program with sourcecode included.| 9.3. PB/VISION PRO for PowerBASIC 3.x| -------------------------------------| Language: English| Author : Daniel P. Stasinski (published by PowerBASIC, Inc.)| Version : 2.1| Price : .00| Supply : http://www.powerbasic.com/files/pub/visndemo.zip| Contents:| - Create SAA-Interfaces with all that is needed| - with Workshop to create Interfaces| - PC-Tools/Norton Utilities Look possible 9.4. PBCompress for PowerBASIC 3.1 ----------------------------------- Language: English Author : Greg Turgeon Version : V1.1 Price : .00/.00 (without or with Sourcecode) Supply : PowerBASIC filearea: Toolkits (allgemein) File : PBCOMP.ZIP Contents: - Filecompression and Decompressionutility - Statusbar - compresses to the space MS Compress does - quite fast 9.5. Personal Protocol/Communication Library for PowerBASIC ------------------------------------------------------------ Language: English Author : MarshallSoft Computing Version : V4.3 (Communication) V1.0 (Protocol) Price : (Communication / (Protocol) Supply : PowerBASIC filearea: DFUE, BBS and FidoNET some BBSes/Filenets (BasNet) in Germany File : PCL4PB43.ZIP PPL4PB10.ZIP Contents: a) Personal Protocol Library V1.0 for PowerBASIC: - XMODEM, XMODEM-CRC, XMODEM-1K, YMODEM, YMODEM-G and ZMODEM protocols. b) Personal Comm Library V4.3 for PowerBASIC: - COM1-COM20, 115.200 Baud, 4 to 20 Ports, 16550 UARTs, and much more. 9.6. POW! - Sound Blaster Toolkit ---------------------------------- Language: English Author : Tim Gerchmez Version : V1.0 Price : .95 Supply : PowerBASIC filearea: Sound Blaster ftp.eskimo.com/u/f/future (Tim's Homepage) File : POW!1_0.ZIP Contents: - Replay of 8bit Samples using DMA - CMF-Replay using SBFMDRV.COM - Speechreplay using SBTALKER.EXE - POW-Library Concept for Samples 9.7. PBGUI Toolkit for PowerBASIC 3.0 -------------------------------------- no longer available 9.8. PBWizard -------------- Language: English Author : Thomas G. Hanlin Version : V2.1 Price : .95 (no Shareware-Version) Supply : PowerBASIC filearea: Toolkits (allgemein) File : PBWIZ21.ZIP Contents: - Many additional functions - replacements of some PowerBASIC-Routines - Sound Blaster using SBSIM (TSR-Driver needed) - XMS/EMS Support - CRC16 - and more and more and more... 9.9. SVGA for PowerBASIC ------------------------- Language: English Author : Stephen L. Balkum and Daniel A. Sill (Zephyr Software) Version : V2.4 Price : .00 Supply : PowerBASIC filearea: Grafik (allgemein) http://www.zephyrsoftware.com File : SVGAPB24.ZIP Contents: - Usage of nearly all VGA/SVGA-Modes - very good in all Modes (really reccomended!) - Loading of PCX-Files (GIF in older Versions) - many useful Graphicroutines - Sprites and much more 9.10. MAXLIB for PowerBASIC v1.2 -------------------------------- Language: English Author : Brian McLaughlin| Info : no longer supported and removed from the market! File : MAX12A.ZIP Contents: - Usage of EMS/XMS to save Array's - I/O-Functions 9.11. DWDOOR for PowerBASIC 3.x ------------------------------- Language: English Author : James R. Davis Version : V3.1 Price : .00/.00 (with printed manual) Supply : PowerBASIC filearea: DFUE, BBS and FidoNet File : DWDOOR31.ZIP Contents: - writing DOORS for BBS-Systems - supports PCBoard, RBBS, QBBS, GAP, Widcat v2+3, WWIV, SPITFIRE, Ultra BBS and others... - Full ANSI and FOSSIL-Support 9.12. Special-Power / Special tools for PowerBASIC 2.1/3.0 ---------------------------------------------------------- Language: German / English Author : Stefan Machwirth Version : v1.10 Price : $ 36.- (38,- DM within Europe) Supply : Mailboxes, The german Basic Network (BasNet) PowerBASIC Filearea: Toolkits (Deutschland) InterNet: http://www.snafu.de/~pbsound/ File : SPPOWENG.ZIP Features: * DDESWAP 2.1: - extended SHELL-command; reduces the need of memory of a program to 1.4 kB while running other EXEs - returns errorlevel - supports recursive starts of EXEs - DDE-functions for data-exchange between DOS-programs - configuration either with TSR-usage or as runtime-version * DLZV 1.1: - data-compression with high-level interface for your sources * CRYPT 1.0: - password-protection with an one-way-method - encodes strings and whole files - no need for debug-protection - not to crack except with very special brute-force-methods * BASXREF 1.32: - free crossreference-tool to check your sources * MERGE-N-SORT 1.01: - high-end sorting-tool with source - assorts fixed-length (random-) files and textfiles - assorting by several fields in ascending or descending order 9.13. BWSB - Bells, Whistles and Sound Boards --------------------------------------------- Language: English Author : Edward T. Schlunder Version : 1.20 Price : / (normal/with ASM Sourcecode) Supply : PowerBASIC filearea: Sound Blaster Internet: http://earthvision.asu.edu/~edward/ File : BWSB120A.ZIP BWSB120B.ZIP Contents: - Moduleplayer (S3M, MOD, 669, ULT, MED, FAR STM) for PowerBASIC - Suppots GUS, Sb1.x, SB2.x, SBPRO, SB16 & PAS - All routines in 386-Code (OBJ-Files) - also usable by QB, PDS, TP, C, C++ and ASM 9.14. Public Domain Sources from German Programmers --------------------------------------------------- These Routines were already published over Computernets and can principally be ordered or downloaded OnLine from the 'PowerBASIC- Filearea: Sourcen'. A complete List can be ordered using the Magic 'PBFILES' (Please remind the Requesttimes!) Here is a little selection of often needed Sources. CrossPoint-Users can request with 'M' and 'F3' immediately : Name: Description: ANSI.BAS - ANSI-Detect BLOAD.BAS - BLOAD/BSAVE Demonstration CHKFILE.BAS - Check if File exists COPPER.BAS - Copper Demo (Source for BasNet-Intro) DATUM.BAS - Get current Day of Week DIR.BAS - Advanced Directory Functions (incl. Time etc.) DIR32.BAS - Advanced Directory Functions for PowerBASIC 3.2 (with Pointers) DIR95.BAS - Advanced Directory Routines for Windows 95 DISKFREE.BAS - Find size of Hard Disk DOS-SYS.BAS - Detect all installed drives DOSXMLIB.ZIP - XMS/Disk Routines ENV.BAS - Change Environment (pass Error 7) FILECOPY.BAS - Filecopy (via Inline-Assembler) with File- and Timestamps FIRE.BAS - Fire (Firesimulation) LADEFONT.BAS - 15 special ASCII charcter in textmode LUPE.BAS - Magnification Glass Demonstration PBCPU.BAS - CPU-Detection in 'true' PowerBASIC (8088-Pentium Pro) PBCRC32.ZIP - High speed CRC32 Routines PBSHELL.BAS - Alternative SHELL-Command (with ERROR-Level) PBSOUND.ZIP - Programming of the CT-VOICE.DRV PBSOUND.ZIP - Programming of the SBPro Mixer PBUNIX.ZIP - Calculation of UNIX-Time PFAD.BAS - Get path in which the called program is located PSL-FLI.ZIP - FLI-Player Extension for PBSOUND Librarys SCROLL.BAS - Scrolling of the screen (VGA-BIOS) SETDATE.BAS - Modify date and time of files STARWARS.BAS - A Scroller in Star Wars Look TEXTMAP.BAS - Texture mapping in PowerBASIC TEXTMAUS.BAS - Change the Mouse cursor in textmode TIMEDATE.BAS - Routines for date and time processing UHR-TSR.BAS - TSR-clock using Timerinterrupt &h1C WINTOOLS.BAS - Check if program runs under Windows, Timeslice WOCHE.BAS - Weekdayroutines XMAS.ZIP - DMA-Channel programming (8bit), here in form of a Christmaspresent 9.15. Public Domain Sources which are needed often -------------------------------------------------- There is often a request for the same sources in the Programmerechos. Here is a little Hitlist of international sources: Name: Description: BARCODE*.BAS - Routines for Barcodes CMDPARSE.BAS - Check Commandline or Environ$ DBASE.BAS - dBASE-Routines EDIT$U.ZIP - String-Editor Routine EDITBOX$.BAS - String-Editor Routine EDITOR.BAS - String-Editor Routine GIF-LOAD.BAS - Loading GIF-Pictures LANSI_31.BAS - Routines to display ANSI-Pictures NET41.ZIP - Create Fido-Netmails PARSECMD.BAS - Check Commandline or Environ$ PB3-DBF.BAS - dBASE III Interface PBFOSSIL.ZIP - Unit to steer a Fossildriver PBGIF.ZIP - Loading and converting a 320*200*256 GIF-Picture in the BSAVE format PBLANT.BAS - LANTastic Function Calls PBNET.BAS - Networkfunctions for INT &h21, Function &h5F PCX320.ZIP - PCX-Loaderroutine for 320*200 & 256 Colors PCXVGA.BAS - PCX-Loaderroutine for 640*480 & 16 Colors ============================== 10. The people from PowerBASIC ============================== Of course every Programming Language has brought up special people, which are known in the public for special work or tools. 10.1. USA - United States of America 10.2. BRD - Germany, german speaking area 10.3. Fido/InterNet - The people from PowerBASIC 10.1. USA - United States of America ------------------------------------ Of course the two most known PowerBASICers of all: Bob Zale - actually developed PowerBASIC and calls it his Lifetime work. bob@powerbasic.com (Bob Zale) Also quite known in the United States are: Dave Navarro - earlier at PowerBASIC Inc., and now known for his "www.basicguru.com" project James C. Fuller - PBGUI Daniel Stasinski - PB/Vision (graphical SAA-Interfaces) Tom G. Hanlin - PB Wizard (loads of additional Functions) Tim Gerchmez - POW! (Sound Blaster Routines) Greg Turgeon - PBCompress (Compressor/Decompressor Unit and some PD-Sources) Stephen L. Balkum - SVGA for PowerBASIC (Zephyr Software) Daniel A. Sill - SVGA for PowerBASIC (Zephyr Software) 10.2. BRD - Germany, german speaking area ----------------------------------------- Some people have become known for special things, especially at Kirschbaum: Patrick Biercher - PowerGRAPH Dirk Hilger - PowerTOOLS Thomas Reichardt - PowerISAM Further on there are some people on the PD and Shareware-Market which are quite known for their Tools: Thomas Gohel - PBSOUND Matthaues Stadler - HiVGA 10.3. Fido/InterNet - The people from PowerBASIC ------------------------------------------------ Without the many messages or ideas this FAQ would not by far be what it is today. This is why I would like to use the occasion to thank some people personally: Thomas Gohel - Author of PBSOUND for PowerBASIC, Author of this PowerBASIC-FAQ and many other things... And I seem to be responsible for the PowerBASIC- Support here... ;) Andras Hoeffken - Measuringinstrumentsteering in PowerBASIC - Chapter 'C++ and PowerBASIC' Stephan Guenther - graphical conversion of all pictures with Highlight Professional V1.0 for "Windows New Technology" - incl. all rendered Graphics and Animations for PBSOUND Thomas Geiger - english Version of this FAQ - for some tips for this FAQ Mark Junker - Chapter 'Converting PDS to PB' - for some tips for this FAQ Wolfgang Bruske - english Version of the Chapter 'Pointer'| Dave Navarro - for his comments to this FAQ Bernd Richter - for the correctness of quite some information Peter Cooper - for the grammatical correctness of the english Version Marc van den Dikkenberg - for some tips for this FAQ Roland Arendes - for some tips for this FAQ Roland Osen - dito Wolfram Sang - dito Dr.P.Jennewein - dito Martin Kiewitz - dito Alexander Podkolzin - dito============================================================================= InterNet: http://www.gohel.de Email: pbfaq@gohel.de Fax: +49-30-47300910 BBS, Line 1: +49-30-47300910 (24h, 8N1, X75, V.42b, CCB, 64000/128000bps) Line 2: +49-30-47300910 (24h, 8N1, V.42b, V.FC, V.34, 9600-33600bps)----------------------------------------------------------------------------- - End of the offical PowerBASIC.GER-FAQ (c) Thomas Gohel, all rights reserved=============================================================================
close