Orientation (this section written in 2007)
Congratulations, you would like to learn more about BEX. How do you figure out how this thing works? This is not easy.
You need to learn a lot about the Apple 2 computer, both from conventional manuals and from the
BEX documentation. BEX is like Swiss cheese. So much happens in assembly language. In fact, it was the existence of the "permenant"
assembly language segment INOUT.BIN that is the key technology that made the difference between BRAILLE-EDIT and BEX.
Since one person wrote and maintained the code,
there was no need for extensive documentation. In fact, versions of this document were all David Holladay needed to keep details
of the software straight, Now, 25 years later, and it takes a little searching around to see how this all works.
Several disks in this collection contain source code. If you do a catalog, you see the files MXFLS and ASM.CODE.
Taken together, these are the LISA assembler. In the assembler, source code is located starting at $1800. The object code
is at $800-$17FF. Thus, modules are limited to 1000 hex long. In BEX, most modules are stored from $7200-$81FF, which
is 1000 hex long.
Boot a source code disk, at the DOS prompt, type BRUN MXFLS. The Lisa assembler is run. It has an exclamation point
(!) prompt. At the prompt, type LOAD (file name). You can assemble the file by entering A followed by Enter. To save
the object code, type (control-D)BSAVE QQQ,A$800,L$3FF (Enter). Of course, change the file name and the length as
appropriate. In BEX, the file name of the major assembly language modules was MOD followed by a number.
In the BEX BASIC programs, the variable U contains the start of the configuration bytes. If you see PEEK(U+69), take the
69 and convert decimal to hex, and you get $45. As you see below, $1E45 contained the slot of the VersaBraille. Of course,
POKE means to place a new value in a memory location. Now you can see how to read and write from parts of the BEX configuration
from BASIC.
U -- location for the configuration area
UQ -- location for the messages byte, to output text to the screen and other default devices
ST -- the location $8200, the start of the page buffer (where text page is loaded)
CD -- the location $7200, the start of the current code module (notice that modules 1,2 and 3 are stored in auxillary memory to speed up disk access)
DK -- the number of disk drives in the configuration
L2 -- 0 if at the Learner level, 1 if at the User or Master Level
L3 -- 0 if at the Learner or User Level, 1 if at the Master Level
Some Locations in the Main Program
100 Main option Loop
110 POKE UQ,15: CALL EC + 24 -- This places a 15 in memory location UQ, and then executes the messages output -- this is the Main Menu prompt
390 pressed illegal option, output message 23
340 handle space for access to Start or MathematiX Menu
320 handle A, F, and T options (VersaBraille)
1800 handle Back translation
220 handle Copy chapters
6500 Disk catalog
2500 Editor
1600 Grade two translation
1680 Heading Test
1055 Mult-function Print
1000 Print
199 Quit
3000 Replace characters
360 Second Menu
350 Page Menu
8000 Remember Mode
8100 Save for Remember Mode
8200 Execute a Remember chapter
7000 select source chapter(s)
7100 load a chapter directory file in $9500
7200 load a page file in $8200
5400 select target chapter names
5500 execute a list of source and target files
999 and 9200 emergency save a page file
So how does BEX work? It has large amounts of assembly language. At anyone time, there is only one BASIC program loaded at a time.
For the Main disk, there are four BASIC programs: MAIN, SECOND, PAGEMENU and TAPE-VB. These are the three menus of the Main Side of BEX.
To understand all the patches to Apple DOS 3.3, you need to make use of the book Beneath Apple DOS.
Remember, most of these notes and the source code were written about 25 years ago. A few details will be hard to come by.
Good luck. The following notes are from the late 1980's.
Memory Allocation
06/10/88
- $000-$7FF -- System Buffers
- $800-$DFF -- Character Sets
- $E00-$1AFF -- resident I/O system and disk scanner
- $1B00-$1DFF -- custom output routine
- $1E00-$1EFF -- configuration
- $1F00-$1FBF -- special sequences
- $2000-$3FFF -- hi-res screen one
- $4000-$71FF -- BASIC program
- $7200 -- assembly language program
- $8200 -- page buffer
- $9500 -- directory
- $9600 -- print line buffer/input buffer
- $9700 -- remember buffer
- $9800-$BFFF -- DOS
- $C000-C08F -- soft switches
- $C100-$C1FF -- slot 1 code
- $C200-$C2FF -- slot 2 code
- $C300-$C3FF -- slot 3 code
- $C400-$C5FF -- slot 4 code
- $C500-$C5FF -- slot 5 code
- $C600-$C6FF -- slot 6 code
- $C700-$C7FF -- slot 7 code
- $C800-CFFF -- shared "fat card" code
- $D000-$FFFF -- system ROM
- $D000-$DFFF -- "hidden" (bank switching) D0 page - Mesaages page and TABLE.BIN
- $D000-$FFFF -- language card memory
Auxillary Memory allocation
- $0000-$01FF -- Page zero, Page one (left alone)
- $200-$2FF -- zippy page directory
- $300-$3FF -- mostly unused
- $400-$7FF -- wide screen memory
- $800-FFF -- remember chapter buffer
- $1000-$1FFF -- zippy chapter page 1
- $2000-$2FFF -- zippy chapter page 2
- $3000-$3FFF -- zippy chapter page 3
- $4000-$4FFF -- zippy chapter page 4
- $5000-$5FFF -- zippy chapter page 5
- $6000-$6FFF -- zippy chapter page 6
- $7000-$7FFF -- clipboard memory
- $8000-$8FFF -- editor module
- $9000-$9FFF -- print module
- $A000-$AFFF -- replace module
- $B000-$B9DF -- Aux Code
- $B9E0-$B9FF -- RWTS parameter list for RAM drive
- $BA00-$BFFF -- copy of character shapes
- $C000-$CFFF -- I/O locations
- $D000-$DFFF -- unused
- $E000-$EFFF -- copy of alternate print program
- $F000-$FFFF -- unused
Stuff in page one
- $140 -- PSX
- $141 -- PSY
- $142 -- PSL
- $143 -- LASTCH
- $144 -- page (edit)
- $148 -- screen width
- $149 -- screen length
- $14A -- screen form length
- $14B -- screen pixel increment
- $14C-$14D -- screen size (for editor)
- $14E -- bottom status line
- $14F -- status line (pixels)
2gs banks $E0 and $E1
- E0/6000 -- Ready page 7
- E0/7000 -- Ready page 8
- E0/8000 -- Ready page 9
- E0/9000 -- Ready page 10
- E0/A000 -- Ready page 11
- E0/B000 -- Ready page 12
- E1/4000 -- Ready page 13
- E1/5000 -- Ready page 14
- E1/6000 -- Ready page 15
- E1/7000 -- Ready page 16
- E1/8000 -- Ready page 17
- E1/9000 -- Ready page 18
- E1/A000 -- Ready page 19
- E1/B000 -- Ready page 20
$1E00 CONFIGURATION BYTES
06/10/88
- $00 -- screen channel (0=0ff, 1=0n)
- $01 -- screen slot
- $02 -- voice channel 00=off, 1=on)
- $03 -- voice slot
- $04 -- braille channel (0=off, 1=on)
- $05 -- braille slot
- $06 -- printer channel (0=off, 1=on)
- $07 -- printer slot
- $08 -- screen mode
- $09 -- voice type (1=Echo)
- $0A -- brailler type
- $0B -- printer type
- $0C -- screen aux (inverse vid flag)
- $0D -- voice aux (letter mode)
- $0E -- brailler aux (auto LF)
- $0F -- printer aux (auto LF)
- $10 -- central flag (0=all, 40=voice & brl only,
80=screen only)
- $11 -- ^ mode
- $12 -- command lock (0=OK, 80=locked out)
- $13 -- all control characters shown flag
- $14 -- screen/edit mode
- $15 -- control/Z screen shut off flag
- $16 -- open
- $17 -- interlock on RWTS for 5.25 inch disks ($D5)
- $18 -- keyboard slot
- $19 -- keyboard mode
- $1A -- upper case only (0=no, 1=yes)
- $1B -- interlock on the DOS file manager ($BA)
- $1F -- all output saved in remember chapter, not input
- $20-$3F -- "Menu Level" copy of $00-$1F
- $40 -- User Level Flag
- $41 -- Master Level Flag
- $42 -- Echo Pitch
- $43 -- Echo speed
- $44 -- Echo punctuation
- $45 -- VB slot
- $46 -- VB model
- $47 -- input slot
- $48 -- Echo volume
- $49 -- input parameter
- $4A -- dirty code patch
- $4B -- number of disk drives
- $4C -- which memory page has TEXTALKER/SCAT patches
- $4D -- print/write flag
- $4E -- abort flag
- $4F -- mult print minus one flag
- $50 -- which brl driver is loaded
- $51 -- Remember flag
- $52 -- Remember, which character
- $53 -- Remember, which bank
- $54 -- Scan type (00=chapter, 01=config, 80=textfile)
- $55 -- restrict scan (last character, 00=no restrict)
- $56 -- logical drive
- $57 -- screen flip mode
- $58 -- remember input delay
- $59 -- screen output delay
- $5A -- don't wait on full screen (print & edit)
- $5B -- Lasts (how CR is handled)
- $5C+$5D -- input buffer pointers
- $5E+5F -- clipboard size
- $60 -- Computer Type (1=2e, 2=2c, 4=2gs, and 90=plus)
- $61 -- slot 1 status
- $62 -- slot 2 status
- $63 -- slot 3 status
- $64 -- slot 4 status
- $65 -- slot 5 status
- $66 -- slot 6 status
- $67 -- slot 7 status
- $68 -- extra memory?
- $69 -- recommended slot
- $6A -- card in recommended slot
- $6B -- Echo/Cricket flag
- $6C-$6F -- Re-usable parameters
- $70+$71 -- Pointer to large print status byte
- $72+$73 -- Pointer to large print write byte
- $74 -- large print "AND" value
- $75 -- large print "CMP" value
- $76-$7D -- Textalker patches
- $80 -- wide screen vector
- $82 -- voice vector
- $84 -- brailler vector
- $86 -- printer vector
- $88 -- DOS output
- $8A -- DOS input
- $8C -- keyboard vector
- $8E -- real screen vector
- $90-$9F -- printer #1
- $A0-$AF -- printer #2
- $B0-$BF -- printer #3
- $C0-$CF -- printer #4
- $D0-$DF -- current printer
- $D0 -- printer slot
- $D1 -- printer class (V,G=0, S=10, L=64, B=128)
- $D2 -- large-print printer type (1=Apple, 2=Epson)
- $D3 -- brailler type (driver #)
- $D4 -- carriage width
- $D5 -- form length
- $D6 -- auto linefeed
- $D7 -- pause on form feed
- $D8 -- upper case only
- $D9 -- special parameter #1
- $DA -- special parameter #2
- $DB -- brailler code
- $E0 -- application loaded
- $E1 -- lock out changes mode
- $E2 -- marker good flag
- $E3 -- voice all keystrokes
- $E4 -- length of locate string
- $E5 -- jerky speech
- $E6 -- # of RAM drives
- $E7 -- Zippy chapter size (6 or 20)
- $E8 -- display character for control (@ or <del>)
- $E9+$EA -- command character for 2gs ports
- $EB -- which module is loaded
- $EC -- which module is loaded
- $ED -- Memory Move Module (1=edit, etc.)
- $EE -- Memory Move, which page (0-9)
- $EF -- Memory move, which direction (0=to main, 1=to aux)
- $F0 -- if non-zero, then Harvey Lauer brl keyboard
- $F1 -- ProDOS RAM drive flag
- $F4+$F5 -- clipboard marker from Editor
- $FF - flag for underbar display for insert in Editor
$1F00 Configuration Bytes
- $00-$5F -- specific printer sequences
- $60 -- Pointer to "name of printer"
- $61 -- Pointer to back space character
- $62 -- Pointer to 10 pitch
- $63 -- Pointer to 12 pitch
- $64 -- Pointer to 17 pitch
- $65 -- Pointer to proportional space
- $66 -- Pointer to underline
- $67 -- Pointer to stop underline
- $68 -- Pointer to bold face
- $69 -- Pointer to stop bold face
- $6A -- Pointer to superscript
- $6B -- Pointer to stop superscript
- $6C -- Pointer to subscript
- $6D -- Pointer to stop subscript
- $70 -- Pointer to VersaBraille setup sequence
- $71 -- Pointer to voice device setup sequence
- $72 -- Pointer to braille device setup sequence
- $73 -- Pointer to input from slot setup sequence
- $74 -- Pointer to printer 1 setup sequence
- $75 -- Pointer to printer 2 setup sequence
- $76 -- Pointer to printer 3 setup sequence
- $77 -- Pointer to printer 4 setup sequence
- $78-$BF -- location of setup sequences
- $D0 -- hard disk volumes+1
- $D1 -- hard disk slot
- $D2 -- virtual drive 1 slot #
- $D3 -- virtual drive 1 drive #
- $D4 -- virtual drive 2 slot #
- $D5 -- virtual drive 2 drive #
- $E4 -- hard disk volumes
- $E5 -- drive one switch, 0=boot, 1=main
- $E6 -- boot drive redirect
- $E7 -- main drive redirect
- $E8-$EF -- sequence for all small
- $F0-$F7 -- sequence for one cap
- $F8-$FF -- sequence for 2 or more caps
Codes and Values 06/10/88
Screen Mode (Configuration Byte $1E08)
- $00 -- Regular screen (40 column)
- $01 -- code not used
- $02 -- no screen active
- $03 -- code not used
- $04 -- wide screen (80 column)
- $05 -- code not used
- $06 -- 40 column screen
- $07 -- braille 40 column
- $08 -- 20 column screen
- $09 -- braille 20 column
- $0A -- 10 column screen
- $0B -- braille 10 column
- $0C -- 5 column screen
- $0D -- braille 5 column
Keyboard Modes (see configuration byte $1E19)
- $0 -- Apple 2e
- $1 -- Apple 2c
- $2 -- Apple 2 plus (escape key for shifting)
- $3 -- Apple 2 plus with shift key modification
- $4 -- braille keyboard
- $5 -- 80 column input
- $6 -- slot or Echo input
Voice Types (see configuration byte $1E09)
- $0 -- slot based
- $1 -- TEXTALKER
- $2 -- DECtalk
- $3 -- Slotbuster
Circuit Card Types(see configuration byte $1E61-$1E67)
- $00 -- unidentified card
- $01 -- Super Serial Card
- $02 -- CCS 7710-01 serial card
- $03 -- CCS 7710-02 card
- $04 -- Apple 2c port
- $06 -- Grappler card
- $07 -- Apple parallel
- $08 -- Slotbuster
- $0C -- Apple 2gs ports
- $0D -- PRINT-IT! card
- $11 -- 5.25 inch disk controller
- $12 -- 2c 5.25 inch disk controller
- $13 -- Echo 2 card
- $14 -- 80 column card
- $16 -- Regular slot memory card
- $17 -- 3.5 inch disk controller
- $18 -- Sider hard disk
- $1C -- Pro Grappler card
- $80 -- (empty slot)
Memory Move Items
- 0 -- directory $0200/$9500
- 1 -- remember $0800/$9700
- 2 -- page $1000/$8200
- 3 -- clipboard $7000/$8200
- 4 -- editor $8000/$7200
- 5 -- print option $9000/$7200
- 6 -- global replace $A000/$7200
- 7 -- remember page $800/$8200
- 8 -- clipboard/hi-res $7000/$2000
- 9 -- alternate print program $7000/$E000
Module numbers
- 0 -- alternate print program
- 1 -- editor
- 2 -- Print (aux)
- 3 -- Global Replace (aux)
- 4 -- Forward Translation
- 5 -- Back Translation
- 6 -- To VersaBraille
- 7 -- From VersaBraille
- 8 -- Input through Slot
- 9 -- Read Textfiles
- 10 -- Adjust page sizes
- (higher module numbers are used in MathematiX)
Special Output Drivers (See configuration byte $1E50)
- 1 -- Dipner Dots
- 2 -- ETF-80 driver
- 3 -- Sagem Driver
- 4 -- Cranmer driver
- 5 -- Old LED driver
- 6 -- PED plate embosser
- 7 -- Camwil printwheel
- 8 -- Video Brailler
- 9 -- Video Brailler with Voice
- 17 -- Large Print Driver
- 18 -- Postscript Driver
Messages
- 0 -- Warning: no not modify
- 1 -- Main menu dump
- 2 -- second menu dump
- 3 -- printer ?
- 4 -- chapter ?
- 5 -- target code
- 6 -- update date
- 7 -- insert program disk
- 8 -- insert data disk
- 9 -- program segment not loaded
- 10 -- chapter not found
- 11 -- info on RUN 999
- 12 -- starting menu dump
- 13 -- page menu dump
- 14 -- starting prompt
- 15 -- main prompt
- 16 -- second prompt
- 17 -- pagemenu prompt
- 18 -- chapter prompt
- 19 -- target chapter
- 20 -- target code prompt
- 21 -- warning warning warning
- 22 -- insert program disk and hit any key
- 23 -- illegal option
- 24 -- print option
- 25 -- no choice selected
- 26 -- transformation chapter not found
- 27 -- save transformation chapter
- 28 -- chapter number
- 29 -- disk error, cancel remember mode
- 30 -- error, identical file names
- 31 -- disk read error
- 32 -- chapters located
- 33 -- no chapters located
- 34 -- textfiles located
- 35 -- no textfiles located
- 36 -- edit chapter
- 37 -- use transformation chapter
- 38 -- auto chapter
- 39 -- textfile
- 40 -- target texfile
- 41 -- transfer error (VB)
- 42 -- first new chapter
- 43 -- second new chapter
- 44 -- disk cannot be read
- 45 -- do you want to start a new chapter?
- 46 -- bad file name
- 47 -- disk full or disk error
- 48 -- when to use fix
- 49 -- plain chapter prompt
- 50 -- target chapter choices
- 51 -- do you want Slotbuster speech?
- 52 -- free
- 53 -- free
- 54 -- free
- 55 -- free
- 56 -- free
Words for Characters
- 1 -- cap
- 2 -- control
- 3 -- break
- 4 -- left
- 5 -- right
- 6 -- up
- 7 -- down
- 8 -- return
- 9 -- escape
- 10 -- form feed
- 11 -- space
- 12 -- askey 28
- 13 -- askey 29
- 14 -- askey 30
- 15 -- askey 31
- 16 -- exclamation
- 17 -- quote
- 18 -- number sign
- 19 -- dollar
- 20 -- percent
- 21 -- and
- 22 -- apostrophe
- 23 -- left paren
- 24 -- right paren
- 25 -- star
- 26 -- plus
- 27 -- comma
- 28 -- dash
- 29 -- period
- 30 -- slash
- 31 -- colon
- 32 -- semi colon
- 33 -- less than
- 35 -- equals
- 36 -- question mark
- 37 -- at
- 38 -- left bracket
- 39 -- back slash
- 40 -- right bracket
- 41 -- caret
- 42 -- underbar
- 43 -- accent
- 44 -- left brace
- 45 -- vertical bar
- 46 -- right brace
- 47 -- tilda
- 48 -- delete
Configuration Questions
- 0 -- don't modify
- 1-20 -- General Messages
- 21-80 -- Questions
- 81-140 -- clarifications
General Messages
- 1 -- System configuration
- 2 -- caps lock down
- 3 -- Y/N
- 4 -- slot error
- 5 -- enter one of the following:
- 6 -- only one slot for large print
- 7 -- not right interface card
- 8 -- A typical value is ...
- 9 -- Do you want an automatic setup sequence for ...
- 10-20 -- unused
1-60 Questions
- 1 -- Voice off now?
- 2 -- Remote keyboard?
- 3 -- remote keyboard slot
- 4 -- shift key mod?
- 5 -- Echo speech?
- 6 -- Cricket speech?
- 7 -- set Echo params?
- 8 -- set Cricket params
- 9 -- fast speech?
- 10 -- pitch code
- 11 -- most punctuation?
- 12 -- speech volume
- 13 -- voice primary output?
- 14 -- voice primary slot
- 15 -- DECtalk
- 16 -- braille primary output?
- 17 -- braille primary slot
- 18 -- VersaBraille
- 19 -- VersaBraille slot
- 20 -- VersaBraille model
- 21 -- download device?
- 22 -- download slot
- 23 -- different screen?
- 24 -- screen width
- 25 -- printer slot
- 26 -- printer class
- 27 -- dot matrix?
- 28 -- specific printer code
- 29 -- large print printer
- 30 -- font size
- 31 -- line spacing
- 32 -- spacing between characters
- 33 -- brailler code
- 34 -- is this want you want
- 35 -- (free)
- 36 -- canceled
- 37 -- is this a KRM?
- 38 -- carriage width
- 39 -- form length
- 40 -- pause on form feed
- 41 -- auto linefeed
- 42 -- set up sequence?
- 43 -- hit Delete to end the sequence
- 44 -- non-standard disk system?
- 45 -- virtual drive slot
- 46 -- virtual drive drive
- 47 -- number of disk drives
- 48 -- number of hard disk volumes
- 49 -- Boot side volume
- 50 -- Main side volume
Entry Points 06/10/88
Input/Output (INOUT.BIN)
- $E00 -- "soft" initialization
- $E03 -- "bottom" initialization
- $E06 -- Screen initialization
- $E09 -- Keyboard initialization
- $E0C -- Printer initialization
- $E0F -- screen init by code letter
- $E12 -- Launch into AUX.BIN (use X as offset from $B000)
- $E15 -- Set up logical to physical drive
- $E18 -- send a message
- $E1B -- free sectors
- $E1E -- input buffer
- $E21 -- scan disk for B-E chapters
- $E24 -- list B-E chapters
- $E27 -- clear screen
- $E2A -- memory move
- $E2D -- message output
- $E30 -- Finish set-up Remember chapter
- $E33 -- Set up Auto chapter
Starting Menu (START.BIN)
- $7200 -- clear configuration area and do a scan
- $7203 -- do a scan
- $7206 -- set up pointers to specific printer page
- $7209 -- move specific printer table into configuration
area
- $720C -- print list of specific printers
- $720F -- install MESSAGES (or QUESTIONS) page into language
card
- $7212 -- hard initialization and check serialization
- $7215 -- PXNUM (parameter for specific printer)
- $7216 -- search language card for TEXTALKER patches
- $7219 -- copy disks
- $721C -- initialize disk
- $721F -- from drive # (used by copy)
- $7220 -- to drive # (used by copy)
- $7221 -- arrange memory for "system description"
- $7224 -- install AUX.BIN and CHAR.BIN in aux memory;
install 2gs RAM drive
- $7227 -- unlink BEX I/O for FID and load RAM drive
- $722A -- What - info on 2gs ports into $320+
Auxilliary Software (AUX.BIN)
- $B000 -- memory move routine
- $B003 -- Set Apple 2c ports
- $B006 -- braille keyboard (with Lauer capability)
- $B009 -- large print with scrolling and cursor
- $B00C -- set up Apple 2gs RAM drive
- $B00F -- Use Apple 2gs RAM drive
- $B012 -- load alternate print program on top of regular
version
- $B015 -- load regular print program on top of alternate
version
- $B018 -- Adjust pages/zippy chapter patch
Edit Module (MOD1)
- $7200 -- Editor
- $7203 -- Initialize variables
- $7206 -- save page
- $7209 -- load page
- $720C -- status (why quiting module)
- $720F -- control-P flag
Print Modules (MOD0 and MOD2)
- $7200 -- Print page
- $7203 -- Page size
- $7205 -- absolute finish of printing
- $7208 -- line counter
- $7209 -- unused
- $720A -- restart page low byte
- $720B -- control/V flag (from editor)
- $720C -- restart page high byte
Replace Charaters (MOD3)
- $7200 -- Replace Characters
- $7203 -- Page size
- $7205 -- Get transformation input
- $7208 -- copy page one of transformation chapter into
hi-res area
- $720B -- copy page two of transformation chapter into
hi-res area
- $720E -- copy from hi-res area into page buffer to save a
transformation chapter
Grade Two Translator (MOD4)
- $7200 -- translate a page
- $7203 -- Page size
- $7205 -- Heading test
Back Translator (MOD5)
- $7200 -- translate a page
- $7203 -- Page size
Transfer To VB (MOD6)
- $7200 -- transfer a page
- $7203 -- Apple Page size
- $7205 -- VB Page size
- $7207 -- PAGEN
- $7208 -- END
- $7209 -- Error flag
- $720A-$720B -- Maximum number of characters in a VB page
- $720C -- Final Code (go into local mode)
- $720F-$7218 -- Chapter Name
Load From VB (MOD7)
- $7200 -- transfer a page
- $7203 -- Apple Page size
- $7205 -- Error Flag
- $7206 -- Page Count
- $7207 -- Current disk drive
- $7208 -- VB page indicator flag
- $7209 -- control character flag
- $720A-$7213 -- Chapter Name
Input through Slot (MOD8)
- $7200 -- Input First Page
- $7203 -- Input Other Pages
- $7206 -- Error Flag
- $FE -- Page Size
Textfile Read (MOD9)
- $7200 -- Read First Page
- $7203 -- Read More Pages
- $7206 -- Scan for ProDOS textfiles
- $7209 -- Error Flag
Adjust Pages (MOD10)
- $7200 -- Adjust Pages
- $7203-$7204 -- minimum size
- $7205-$7206 -- maximum size
- $7207 -- source drive
- $7208 -- target drive
- $7209-$7228 -- source chapter name
BEX DOCUMENTATION 06/10/88
Creating BEX DOS 3.3 Disk
- 1) Boot DOS 3.3 system master disk. Load BEX HELLO
program. INIT a fresh disk.
- 2) Use FID to copy all files (=) onto the fresh disk.
- 3) Boot Pronto-DOS disk. Run PRONTO UPDATE. Get to the
Enhancement Menu. Select options so only #4 and #6 are "yes" (set the rest
at "no"). Update the disk.
- 4) BRUN RWTSX program (found on "BRAILLE-EDIT Plus Master
Disk". Make the following changes:
- Track 1, sector 10
- 193 change to 182 (suppress "=254")
- Track 2, sector 0
- 175 - 160 " "
- 176 - 160 " "
- 177 - 212 "T"
- 178 - 207 "O"
- 179 - 196 "D"
- 180 - 160 " "
- 181 - 196 "D"
- 182 - 197 "E"
- 183 - 211 "S"
- 184 - 201 "I"
- 185 - 193 "A"
- 186 - 210 "R"
- 5) Serialize the disk
BEX copy protection
Every sector of a DOS 3.3 disk has three bytes which
must be present for DOS to accept that a sector has been read correctly.
These bytes are $D5 $AA and $AD. On a legal BEX disk, each side has one
bad sector, track 2, sector 15. One that sector, the three bytes are $D5
$AD and $AD. Most of the sector contains an anti-piracy lecture. Byte $FF
gives the status ($29 is pickle slicer, $A3 is master, and $18 is a copy).
For a master disk, byte $FE gives the number of copies remaining. Program
PUTIN on the serialization disk puts in the bad sector. Program START.BIN
on the BEX boot side properly copies a BEX disk.
The serialization information is stored on the VTOC
(track 17, sector 0). Bytes $07-$26 of the VTOC contain the serialization.
These bytes are not used by DOS 3.3. DOS 3.3 copies these bytes when a
disk is initialized or copies. The serialization data is scrambled (add 7
then exclusive or with $FF). Here is the list:
- $07-$16 - Name
- $17-$1B - Zip Code
- $1C-$20 - Invoice
- $21-$22 - "BX" (code to mean BEX)
- $23-$24 - sequence number in binary
- $25-$26 - encoded date in binary
Note that after BEX is booted, a copy of the
serialization information is located in the VTOC sector buffer. The
location of the serialization information in DOS is $B3C2-$B3E1. If $B3E0
and $B3E1 are both zero during "hard initialization" (and a Sider is not
being used) then the "interlock is set at zero. The interlock $1E37 is set
at $D5 if serialization information is found and the bad sector exists. A
soft initialization sets $1E17 to $D5. During a screen initialization,
$1E17 is copied onto $B8E7. If $B8E7 is not $D5, then DOS cannot read
floppy disk. This interlock prevents a FID copy of BEX from working.
Booting BEX
The BEX disk contains a standard DOS 3.3 modified by
ProntoDOS for faster operations, and further modified to spiff up the DOS
catalog header. If TEXTALKER is booted, it modified DOS as well.
First program HELLO is run. HELLO does 3 simple
things: It displays a message, it POKEs some values into zero page to
change the location of BASIC programs, and then loads program LOADCON. The
following locations are modified:
- $4000 - $00
- $4001 - $00
- $4002 - $00 (these clear the new program space)
- $67 - $01
- $68 - $40 (pointer to new program space)
- $69 - $03
- $6A - $40 (pointer to variables)
Note that program HELLO loads into $800 and
program LOADCON loads into $4000.
Program LOADCON is quite complicated. The following
happens before line 20: set MAXFILES to 2 (this frees up 512 bytes of RAM
$9600-$97FF), load files CHAR, INOUT.BIN, START.BIN, clear configuration
area and do first scan, complain if no language card, load 3 modules into
auxillary memory, decide if zippy chapter should be clobbered or not, load
appropriate TEXTALKER if appropriate, reload START.BIN, and scan for
Textalker patches. Next, prompt for a configuration. For the purposes of
this documentation, assume that we are not setting up a new configuration.
If there is a error, list configurations, and reprompt. If configuration
is found, then rescan the system (CD+3), load the appropriate MESSAGES
page (CD+15), and do a hard initialization (CD+18). Finally, set the Echo
parameters and run program MAIN (Starting Menu)
Setting up a New Configuration
In program LOADCON, check for first character being
".", "*", or "&", set appropriate bytes $1E40 and $1E41 to set the
level. Run program SETCON. Program SETCON mainly changes locations between
$1E00-$1FFF (the configuration area). The QUESTIONS page is loaded in the
area used by the MESSAGES page. After the configuration file is saved to
disk, the appropriate MESSAGES page is reloaded, a hard initialization is
done, the Echo parameters are set, and then program MAIN is run.
Accessing Disk Drives
There are two parallel ways to set the disk drive from
assembly language. You can change the default drive by adjusting locations
$AA68 and $AA6A, or you can directly read from the drive using the RWTS
subroutine located at $BD00. BEX uses a single subroutine ($E15) to affect
the appropriate locations. Location $AA68 contains the default disk drive
number, and location $AA6A contains the default disk slot number. These
are set up by the $E15 "Drive" routine in the I/O module. This routine
translates the logical drive number into the physical slot and drive using
the table located in $1FD0.
The RWTS subroutine uses a table of parameters the
describe its action or reading or writing a disk sector. This table is
located at $B7E8. When RWTS is used (Read textfiles, scan catalog for BEX
chapters, etc.), the $E15 routine sets up some of the parameters. Then the
track, sector, and buffer locations are set. Finally, the RWTS subroutine
is called to do its thing. Here are the bytes in the RWTS table:
- $00 -- $01 (always equal to $01)
- $01 -- slot number times 16 ($10)
- $02 -- drive number
- $03 -- volume number
- $04 -- track number
- $05 -- sector number
- $06 -- $FB, low byte of Device Characteristics table
- $07 -- $B7, high byte of Device Characteristics table
- $08 -- low byte of memory buffer
- $09 -- high byte of memory buffer
- $0A -- $00 (unused)
- $0B -- $00 (partial byte indicator)
- $0C -- command, $01=read, $02=write
- $0D -- error return code
- $0E -- volume of last disk access
- $0F -- 16 times the slot of last disk access
- $10 -- drive number of last disk access
The $E15 code simultaneously sets up key bytes in
the RWTS table and sets up the $AA68 and $AA6A bytes. The $E15 code
deserves to be checked out line by line:
- DRIVE -- LDA DRV/LG -- ; load Acc with logical drive
number
- LDX #$00
- STX CON+3 -- ; zero RWTS volume byte
- STX CON+13 -- ; zero RWTS return byte
- LDY SLDRTB+1 -- ; (SLDRTB=$1FD0) load Y Sider slot
- BNE SIDER -- ; if non-zero, then there exists a Sider
- ODRIVE -- ASL -- ; multiply logical drive # by 2
- TAX
- LDA SLDRTB,X -- ; SLDRTB=$1FD0, get physical floppy slot
- STA $AA6A
- LDA SLDRTB+1,X -- ; get floppy drive number
- ODRZ -- STA $AA68
- STA CON+2 -- ; save in RWTS drive number
- LDA $AA6A -- ; retrieve drive slot number
- ASL -- ; multiply by 16
- ASL
- ASL
- ASL
- STA CON+1 -- ; save in RWTS slot number
- RTS
- SIDER -- CMP #$01 -- ; we do something special for Sider
drive 1
- BNE SIDER2 -- ; if not 1, handle normally
- LDX SLDRTB+$15 -- ; get switch boot vs. main side
- LDA SLDRTB+$16,X -- ; look up true volume number
- SIDERV -- STA $4F8,Y -- ; tell the Sider what volume number
to use
- STA CON+3 -- ; save in RWTS volume number
- STY $AA6A -- ; set up slot number
- LDA #$01 -- ; force drive 1
- BNE ODRZ -- ; set up other parameters
- SIDER2 -- CMP SLDRTB -- ; find out if using floppies
- BCC SIDERV -- ; no, handle as a Sider
- SBC SKDRTB+$14 -- ; subtract # of Sider volumes
- BNE ODRIVE -- ; go back to floppy handler
DOS PATCHES 06/10/88
Unmodified DOS 3.3
The correct entry point to the RWTS subroutine is
$03D9. The RWTS subroutine reads and writes a sector of data to the floppy
disk. By allowing expansions of this routine, it is possible to allow DOS
3.3 to work with additional mass storage devices. When RWTS is called, the
Y register has the low byte and the A register has the high byte of the
address of a table of parameters. Here is the unpatched version of the
start of RWTS:
- $03D9 -- JMP $B7B5
- $B7B5 -- PHP
- SEI
- $B7B7 -- JSR $BD00
- BCS ERR
- PHP
- CLC
- RTS
- ERR -- SEC
- RTS
- $BD00 -- STY $48
- STA $49
- LDY $02
- STY $06F8
- LDY #$04
- STY $04F8
- LDY #$01
- LDA ($48),Y
- $BD12 -- TAX
- (etc.)
Catagories of Patches
There are three patching locations. Both the Sider and
a regular slot memory card place a JMP instruction at $BD00. For this
reason, a Sider hard disk and an Apple memory card cannot be placed in the
same system. The RAMDRIVE program from Applied Engineering and David's
Apple 2gs RAM drive program place a different JSR instruction at $B7B7.
Since the Applied Engineering program cannot work on an Apple 2gs, and
David's program only works on an Apple 2gs, this use of the same patching
location causes absolutely no problems. Finally, AmDOS 3.5 patches DOS by
placing a JMP instruction at $BD12. To my knowledge, no other DOS patch
uses this location.
Sider Patch
The Sider patch does not require additional program
space in DOS. At $BD00, a JMP instruction is placed to execute code in the
card firmware. The card firmware examines the whole sequence of DOS
patches, to find the SEI command followed by a JSR. If a patch is written
that does not conform to this pattern, the Sider will crash the system.
David's Apple 2gs patch had to be rewritten to work with the Sider.
Regular Slot Memory Card
The Regular slot memory card patch does not require
additional program space in DOS. At $BD00, a JMP instruction is placed to
execute code in the card firmware. The card is activated by a IN#5 (or
whatever) command. BEX 3.0 does this automatically when it recognizes a
regular slot memory card. The built in firmware disables the INIT command.
BEX restores the INIT command.
Applied Engineering RAMDRIVE
The RAMDRIVE program substitutes a JSR $A583 for the
JSR $BD00 at location $B7B7. The RAMDRIVE patch makes use of locations
$A581 to $A5A2. According to BENEATH APPLE DOS, these areas of DOS 3.3
handle the FP and INT commands. However, there is no evidence that these
commands are disabled with the use of RAMDRIVE. In the unmodified
RAMDRIVE, any use of INIT disables the RAM drive patch. We supply a
slightly modified version of RAMDRIVE which only clobbers the RAM drive if
an attempt is made to INIT a disk in slot 3.
The actual patch at $A583 makes use of soft switches
$C008, $C009, and $C073 to switch banks.
David's 2gs RAM drive
David's RAM drive patch makes use of the fact that
uses ProntoDOS. The DOS in BEX does not store a copy of DOS on initialized
disks. Thus the routine at $B74A is never used. The routine at $B74A is
described as "Put DOS on tracks 0-2". When the patch is placed in the
system, location $B74A has an RTS instruction. The actual patch is placed
in $B74B.
The patch consists of placing a JSR $B74B at $B7B7.
Here is the patch:
- $B74A -- RTS ; protection in case DOS is unmodified
- $B74B -- STY $48
- STA $49
- LDY #$01
- LDA ($48),Y
- CMP #$30
- BEQ GS/PATCH
- REGULAR -- LDY $48
- LDA $49
- SEI ; format required by Sider software
- JSR $BD00
- RTS
- GS/PATCH -- LDA $00
- PHA ; save contents of location $00
- JSR DOIT
- ROR $00 ; The high bit of $00 is error byte
- PLA
- STA $00 ; restore location $00
- RTS
- DOIT -- LDX #$0F
- STX $03ED
- LDX #$B0
- STX $03EE
- SEC
- CLV
- JMP $C314 ; execute location $B00F in auxiliary memory
For more information, see program AUX.BIN.
Location $B00C sets up the RAM drive, location $B00F is used to actually
load or save a sector into the Apple 2gs memory. These routines use the
programming techniques described in the Open Apple article, they switch
from code executed in auxiliary memory to fully native Apple 2gs code and
back again.
AmDOS 3.5
The AmDOS code places a JMP $BEAF in location $BD12.
The AmDOS patch replaces the code used to initialize floppy disks. See the
documentation that comes with AmDOS for details. The AmDOS routines
supplied with BEX are heavily modified to make them more appropriate for
use with BEX. In particular, the file AMDOS on the Main side (modified
copy of AMDOS.LOAD) uses the BEX slot information in $1E61-$1E67 to
determine the which slot (if any) contains a controller card for a 3.5
inch disk. Be aware that the AmDOS software checks to see if the slot
contains the appropriate signiture bytes for a 3.5 inch disk drive. It is
possible for a user to "force BEX" to recognize a 3.5 inch drive which
AmDOS would reject.
The file AMDOS.INIT.BEX is a modified copy of
AMDOS.INIT. It also cuts down on the number of prompts. The program
translates the BEX drive number to the appropriate slot and drive. The
initiate command "I" was changed to a space to conform to BEX. The program
was modified so that it would not save a greeting BASIC program. The
program was changes so it could be called as a subroutine from a BASIC
program (and the BASIC program would not halt). The original version had
to be run from the BASIC prompt and would halt the execution of any BASIC
program if an attempt was made to run it from another program.
Gary Little, the author of AmDOS was told of these
modifications, and he approved the licensing of these modified versions.
The initialization program contains a message explaining how to obtain a
full featured version of AmDOS 3.5.
FID changes
The copy of FID supplied with BEX has been modified to
accept drive numbers from 1-6. Previously, FID only accepted a drive
number of 1 or 2.
The Print Program
A Guide the Labels used in the program
This assembly language program is used by both printed
output and writting textfiles. This program is also called from the Editor
if you hit control-V in the Editor (to show how things look like as you
are editing). This program formats for either the screen or to a slot
based device.
- ORG $7200 Absolute location of print program in BEX
- OBJ $800 Assembled at $800
- ;---->>> MOD2 [file name on BEX Main side]
- NLS
- JMP START
- HEX 0000 2 bytes for the length of the page buffer
- JMP ABSFIN after the very last BEX page has been dealt
with, output what is left in the line buffer
- **********
The following locations are set up by the BASIC
program Main or by other assembly language modules:
- LCNT\\ HEX 00 line count; which line are we at the
moment
- CONY\F HEX 00 Flag to determine if markers indicating the
end of a BEX page should be left when writing to a textfile.
- RSPG\\ HEX 00 if non-zero, suppress printing until the page
number equals this value; used for redoing a messed up printing job.
- CONV\F HEX 00 flag set (non-zero) if the print program is
called from the Editor (using a control-V)
- STRT\\ HEX F7 flag to determine if it is appropriate to
reset all the critial parameters for the print program. This value is
compared with the form length at the start of each BEX page. If they
differ, then a total reset is done
- **********
The following are buffer locations:
- PG\BUF EQU $8200 The BEX page buffer; $8200-$91FF or
4096 decimal characters. The BASIC program places a $FF at the end of the
page buffer.
- ROM/01 EQU $DF00 Roman numeral pointer table for last
decimal digit
- ROM/10 EQU $DF0A Roman numeral pointer table for the tens
decimal digit
- ROM/VL EQU $DF14 Roman numeral ASCII strings
- SQ\BUF EQU $9900 "Special Sequences Table", 1 to 1 with the
line buffer; each non-zero entry points to an entry in SL\BUF
- SL\BUF EQU $99C4 Each entry lists one or more pointers to
the list of escape sequences start in the configuration area
- TB\BUF EQU $9800 tab table, 1 to 1 with the line buffer
- P1\BUF EQU $9600 The line buffer; it is called "P1" since
it is the primary line buffer
- P2\BUF EQU $9680 The secondary line buffer. ONLY used
during textbook format braille. For space saving reasons, this buffer
occupies the last 128 bytes of the line buffer (unused in braille output)
- H1\BUF EQU $9200 buffer for the first line of heading
- H2\BUF EQU $9280 buffer for the second line of heading
- H3\BUF EQU $9300 buffer for the third line of heading
- H4\BUF EQU $9380 buffer for the fourth line of heading
- DD\BUF EQU $93C0 buffer containing the current double
dollar command being parsed
- PP\BUF EQU $93E0 buffer for the print page indicator used
in textbook format
- DC\BUF EQU $93F2 buffer for the decimal page number
- PN\BUF EQU $93F6 the page number buffer. This is the ASCII
of the actual printable version, in inkprint, braille, Roman Numerals, or
whatever.
- FT\BUF EQU $9400 buffer for the footer
- VT\BUF EQU $9480 the vertical control table. There is one
entry for each line of the page (VT\BUF+1 for line 1, etc.). The first
nibble gives information about what to do before assembling a line in the
line buffer. The second nibble gives information about what to do after a
line has been assembled in the line buffer.
- **********
The following are locations in the configuration
area.
- SCR/FG EQU $1E00 screen flag; 0=no; 1=yes
- SCR/TY EQU $1E08 screen flag; 0=40 column, 4=80 column; 6+=
various hi-res screen types
- PRT/FG EQU $1E06 0=no; 1=yes; the print program either
outputs to screen or to a slot-based printer
- ABOR\F EQU $1E4E abort flag, set if you hit the escape key
- P/SLOT EQU $1ED0 printer slot; only appropriate for output
to a slot based device
- PR?BRL EQU $1ED1 print or braille device; 0 to 127 for
print devices; 128 for braille devices. This flag determines paragraph
format plus lots of other internal flags
- PR/TYP EQU $1ED3 printer driver type, only check to see if
the LaserWriter driver (final output of a form feed for the LaserWriter)
- CWID\\ EQU $1ED4 carriage width
- FORM\\ EQU $1ED5 form length
- ACAP\F EQU $1ED8 all caps flag; when non-zero, output is in
ALL CAPITAL LETTERS
- FF/WAT EQU $1ED7 form feed wait; when non-zero, then pause
on form feed (single sheet feed)
- COP/ML EQU $1E4F multiple copy flag, at the very end, need
a form feed if making multiple copies
- PR?WRT EQU printing versus writing textfile flag; 0 = write
textfiles, 1 = printing $1E4D
- JAMS\F EQU $1E5A
- S/WID EQU $1EF8
- SEQUEN EQU $1F00
- **********
The following are zero page pointers used by the
print program
- Z1C EPZ $1C pointer to the current character
- Z1A EPZ $1A
- ZFC EPZ $FC pointer to cursor position in editor (when
print program is called by the editor)
The locations from RMAR\\ to Z$$\F are completely
reset by $$d; $$vb; or $$vt.
The following are locations inside and totally
managed by this print program ((\\ means numeric value, \F means binary
flag; 0=default value, 80=special value):
- RMAR\\ HEX 00 right margin
- LMAR\\ HEX 00 left margin
- SMAR\\ HEX 00 soft return margin; <<NEW
FEATURE>> if a carriage return is caused by a soft return (long line
and no hard return); then start at left margin plus the soft return; if a
hard return; start new line at just the left margin
- LNSK\\ HEX 01 line skip; how many returns at each line
- PASK\\ HEX 02 paragraph line skip; totally independant of
LNSK\\. Start at 2 for inkprint, 1 for braille
- INDT\\ HEX 05 paragraph indent; 5 for inkprint device; 2
for braille
- EWID\\ HEX 50 effective width; carriage width minus the
right margin
- BWID\\ HEX 50 braille width; equal to the effective width
for inkprint device; but that absolute carriage width for braille device;
used for $$vk and $$vr commands
- PGNL\\ HEX 01 page number low byte
- PGNH\\ HEX 00 page number high byte. The page number is
stored as a 2 byte value. When the page number is printed, it is converted
into a decimal format
- NUM\\ HEX 0000 binary value of numeric parameter of a $$
command
- FFSK\\ HEX 00 number of carriage returns at a top of form,
set by $$sf#
- SVLMAR HEX 00 save left margin; used by the <<NEW
FEATURE>> smart centering. Basically, the act of centering increases
the left and right margin temporarily to make better format for multiple
lines being centered. When the centering is over, the left and right
margin must be restored.
- SVRMAR HEX 00 save right margin. See above.
- WHED\\ HEX 00 which headings have been used - there are 4
heading lines that can be assigned to any of the lines on the page. WHED\\
is bumped up each time a heading line is asssigned by the $$vh command.
- PRE/PN HEX 00 character placed before the braille page
number, ignored if ASCII 0
- PREPPI HEX 00 character placed before the print page
indicator
- B?P#\F HEX 00 flag to determine if page numbering is in a
print or braille format
- BOT?\F HEX 00 flag used to figure out if everything has
been done at the bottom of a page
- CENT\F HEX 00 centering flag
- AFIN\F HEX 00 flag for use when "absolutely" finishing out
the print program; flushing out the last print line
- HEAD\F HEX 00 heading flag; set to $80 to indicate to the
line formatter to store the line rather than print it out
- Page\F HEX 00 when using flexible page numbering (delete
key in a header or footer is replaced by the page number); the word "Page"
is suppressed.
- PURG\F HEX 00 purge flag; used to control the <<NEW
FEATURE>> secondary line buffer; 0 means don't use secondary buffer,
40 means ready to use, 80 means use it, but print out contents first
- ROMN\F HEX 00 Roman numeral flag. Roman numeral format is
possible for both print and braille formats
- SCEN\F HEX 00 Smart centering flag. Used to keep each line
centered until a hard carriage return, paragraph symbol, etc.
- SPAC\F HEX 00 uned to indicate if "$$" can be used as
format indicators
- STCY\F HEX 00 sticky space flag, set by $$ss or by braille
output - a control-S is output as a space, a control-T is a "vanishing
space"
- DHYP\F HEX 00 set discretionary hyphenization <<NEW
FEATURE>> use ASCII 30 and 31 as "end of line codes"
- PTHY\F HEX 00 flag to indicate that a hyphen should be
placed at the end of the line
- UNDL\F HEX 00 underlining flag; 80 means current text is
being underlined
- UNPC\F HEX 00 flag to suppress underlining of trailing
punctuation
- SSQ\PT HEX 00 pointer into special sequences table
- PPPS\T HEX 00 position of the start of a print page
indicator in the line buffer
- VKPS\T HEX 00 position to place a word at the end of the
current line
- VIFC\F HEX 00 flag for $$vi <<NEW FEATURE>>
$$VI is similar to $$vl; except the current line is finished before
starting a new page
- SVVT/T HEX 00 temporary storage of the VT\BUF entry of the
top line during $$vlt (table of contents format)
- SVVT/B HEX 00 temporary storage of the VT\BUF entry of the
bottom line during $$vlt (table of contents format)
- BEG\PT HEX 00 pointer to the first non-spaced character in
a line (used in centering calculations
- END\PT HEX 00 last non-space character in a line
- END2PT HEX 00 end of line pointer in the secondary buffer
- WORD\T HEX 00 temporary pointer used when deciding if a
word can fit in the current line
- CR#\T HEX 00 temporary used in counting out double or
triple spaced text
- SV|X\T HEX 00 temprary save for the X register
- NUM\T HEX 00 misc. temporary
- PN/LEN HEX 00 length of the printable page number
- SV|Y\T HEX 00 temprarary save for the Y register
- PGNL\T HEX 00 temporary used in page number calculations
- PGNH\T HEX 00 temporary used in page number calculations
- CONV/C HEX 00 flag used in control-V mode (called from the
editor)
- SVPURG HEX 00 save for the purge flag
- VP$P\T HEX 00 flag to avoid a line skip when a paragraph
follows a print page mark ($$vp and $p )
- MAIN\T HEX 00 bizzare flag so that a fancy line by line
table in TRANSCRIBEX can restrict guide dots to the current column (MAIN
is set by $$vx and changes the calcualtion of BWID||)
- Z$$\F HEX 00 flag for $$z mode (no formating; all
characters output)
- **********
The following value is NOT changed by $$d et. al:
- LIN\PT HEX 00 pointer into the line buffer
- **********
The following are various strings, conversion
tables, address tables et. al used by the print program:
- LIT$$D ASC '$$D'
- DEC/TB HEX 01000A006400E803
- HEDT/L HEX 000080008000
- HEDT/H HEX 929292939394
- PageLT ASC 'Page '
- SSQ/CH ASC 'i?027puvbceflmdxyz'
- ;
- ;
Still More Dox on the Print Program
- Format for title page (braille page number on the
bottom of the last line). skips to the top of a page and does a total
reset $$d as well. Puts $11 in the table entry for the last line.
- $$vb -- Book format, braille page number at the end of the top
line. skips to the top of a page and does a total reset $$d as well. Puts
$11 in the entry for the top line.
- not defined
- centering with no look ahead (using $$ve it is possible
to center on the last line of a page, something that is required for a
braille title page).
- Put a running footer. Put $A0 in the appropriate table
entry. Put $A0 in HEAD\F so that the text of the footer will be stored in
the right place.
- set ROMN\F (Roman numeral flag) to $80. This allows for
print or braille style Roman numerals (depending if output is to a print
or braille device).
- $$vh# - Place a running head on line #. The system has a
limit of 4 possible running heads. Places the values $60, $70, $80, or $90
in the appropriate table entry.
- $$vi# - does an action very similar to $$vl#, except that
$$vi# allows the current line to finish before deciding if it is
appropriate to skip to the next page. The numeric parameter is used to ask
the question: Are there less than # lines left on this page? If so, skip
to the next page.
- Place a BEX word at the end of the current line.
- Place a BEX word at the end of the current line. Put a
space before the word, (if the previous character is an isolated guide dot
("), make it a space as well).
- # - Similar to $$vi#, except that the decision to skip to a
new page is immediate.
- table format - if a top or bottom line is used for a
mixture of text and page indicators, then retrict the use of text on those
lines.
- restore the top and bottom lines to normal, undo the
effects of $$vlt.
- if there is nothing in the line buffer, don't do
anything. If there is something, do a carriage return (there are some
formats that require one to start a fresh line, but not to skip a line).
- if we haven't really started a new page, don't do
anything, otherwise, start a new page.
- # - make line # ordinary. Puts $00 in the table for line #.
Undoes the effects of $$vd#, $$vs#. A $$vo1 clears a running head in line
1.
- #[word]#- uses [word] as the start of a new print page. If
appropriate, put in a line of dashes with [word] at the end. If
appropriate, start a fresh page.
- [word] - place [word] at the end of the current line.
Designed for line numbers in poetry. Strips of any leading number signs
(#).
- repeats character C for the rest of the line. Does not
change the pointer into the line buffer.
- # - skip line #. Puts a $40 as the entry for line #.
- textbook format. (braille page number on the bottom of
the last line, print page number at the end of line 1). skips to the top
of a page and does a total reset $$d as well. Puts $11 in the table entry
for the last line, and $22 in the table for the top line. It subtracts 6
from the carriage width for the very first line.
- checks if there is a running head. If so, skip a line.
This is used for tables of contents.
- [implemented 9/29/86] set so that the braille page number
is NOT cleared during a format command ($$vb or $$vt). This command is
desinged to make life easer for those who like frequent changes in running
heads.
- does nothing
- set MAIN\T for non-zero. This flag is used to set BWID\\
to take into account the effects of the right margin. See routine S/EWID.
The value BWID\\ is used for $$vr, $$vj, $$vk, and $$vq.
- place character C in front of the braille page number. If
character is equal sign (=), then zap this feature.
- If starting a new page, and there is a running head, skip
to line 3.
- Other new commands
- soft margin. When a new line is caused by soft return,
add # to the left margin.
- immediately jump to the position of the soft margin. By
jump, I mean similar to a $$p# command. The idea is that <CR> $$j
immediately starts a new line at the same position as a soft return.
- f# - give # carriage returns after a form feed. These
returns are not counted in the form length.
- allow use of ASCII 30 and ASCII 31 as discretionary
hyphen or discretionary line break. A $$sd is built into $$vb and $$vt.
- switch to alternative print program (don't check for fit)
- switch to alternative print program and check for fit
- switch back to the regular print program
Misc. Stuff 06/10/88
Software Patches
TEXTALKER.OBJ for 3.1.2 is patched at $D8A2 to place
three $EA (NOPs). For BEX 3.0, this patching happens automatically
no matter what version of TEXTALKER is used.
SCAT.LC is $D00 in length. It loads at $8900 with
$8A00-$95FF goes to $D000 language card. Location $DA03 is patched to load
$C01F as the 40/80 column flag instead of SCAT internal flag. Location
$D046 is patched to do nothing special for a PR#1. BEX software searches
for 85 92 to know how to release control-R for use in the editor.
SCAT installs the following patches: $111 PR#; $117
IN#; $11D output character; and $123 input character
RAMDRIVE is patched at $64B5 through $64C9 to allow
initializing floppy disks when RAM drive is loaded.
Lower Memory Print program
- $1C, $1D -- pointer
- $1A, $1B -- header pointer
- $1E, $1F -- temporary locattions
- $FC -- control/V flag Input/Ouput
- $06,$07 -- hi-res output
- $08,$09 -- hi-res output
- $0A,$0B -- message pointers
- $0C,$0D -- braille keyboard
- $0E,$0F -- braille keyboard AUX $06,$07 -- hi-res output
- $08,$09 -- hi-res output
- $0A,$0B,$0C -- Aux move parameters from $1EED-$1EEF
- Large Print Driver $08,$09 ??
- $FE,$FF -- New pixels pointer
- $3E,$3F -- pointer to shape table Start
- $06,$07 -- search card firmware
- $1C,$1D -- message output
- $1E,$1F -- card search pattern
- $48,$49 -- RAM patch DOS Edit
- $1A,$1B -- NUM
- $1C,$1D -- Limit
- $18,$19 -- common
- $3C,$3D -- block move start
- $3E,$3F -- block move till
- $42,$43 -- block move to
- $FA,$FB -- POS/Z
- $FC,$FD -- CUR/Z
- $FE,$FF -- FIN/Z Page One (Stack)
- $10C -- ALLCON (whether all control characters are
displayed)
- $10D -- Screen type
- $10E -- screen aux. flag
- $10F -- dirty code value
- $111 -- SCAT PR#
- $117 -- SCAT IN#
- $11D -- SCAT output character
- $123 -- SCAT input character
- $140 -- PSX
- $141 -- PSY
- $142 -- PSL
- $143 -- LASTCH
- $144 -- page (edit)
- $148 -- screen width
- $149 -- screen length
- $14A -- screen form length
- $14B -- screen pixel increment
- $14C-$14D -- screen size (for editor)
- $14E -- bottom status line
- $14F -- status line (pixels)
Page Two Stuff
- $200-$2FF -- write textfile tab area
- $200-$2FF -- Apple line buffer
- $280-$2FF -- Control-V patch from the Editor Page Three
Stuff
- $300+ hi-res temporary (memory usage depends on screen
size)
- $320-330 -- voice on auto chapter
- $320-325 -- merge pages
- $320-327 -- init or copy a floppy disk
- $320-337 -- What is in this computer (2gs)
- $330 -- Large print output
- $340+ -- computer braille print jump
- $354-35F -- stack repair (don't trash)
- $360-37F -- Configuration name (don't trash)
- $380-390 -- Input/Output temporaries
TEXTALKER Structure TEXTALKER comes in two parts,
TEXTALKER.RAM, and TEXTALKER.OBJ. TEXTALKER.RAM is a binary program that
loads into $9300, and is $210 long. TEXTALKER.RAM is responsible for
loading TEXTALKER.OBJ into the language card area of memory $D000-$FFFF,
for installing the patches to DOS 3.3, and to maintaining the appropriate
screen display. The program uses a subroutine inside the language card
area of memory to locate an Echo or Cricket.
TEXTALKER.RAM Code
- $9300 - save registers in save area $95F0
- $9312 - clear the screen
- $9315 - position cursor in line 12
- $9319 - display "loading to RAM card on screen"
- $9324 - perform direct BLOAD of TEXTALKER.OBJ into $D000
into LC memory
- $9338 - clear the screen
- $933B - display the copyright message
- $9348 - patch $AA53-$AA56 (The DOS input/output vectors)
- $935C - patch $A22B-$A22D (the PR# code)
- $936B - switch to LC, see if Apple 2 plus
- $9380 - special code for Apple 2 plus
- $93A2 - place DOS patch at $BA69-BA95
- $93B8 - place DOS patch at $BCF0-BCFD
- $93B8 - switch to LC, and JSR FB87 (search for
Echo/Cricket??)
- $93CB - restore flags and return from subroutine Vector
Patches
- $AA53-AA54 - output vector, changed to $BA7C instead of
$FDF0 (screen)
- $AA55-AA56 - input vector, changed to $BCF0 instead of
$FD1D (keyboard)
- $A22B-$A22D - part of PR# code, changed to JMP $BA69
$BA69 patch
- $BA69 - patch for PR#; if PR#0, then push 0 into stack,
switch to LC and JMP $D003; if PR#3, then JSR $C300, push 3 into stack,
switch to LC and JMP $D003; if other PR#, then JMP $FE95, the regular PR#
handler.
- $BA7C - output vector, push A, switch to LC, and jump $D006
- $BA83 - return from LC, pop A
- $BA88 - return from LC, pop A, and display to screen $FDF0
- $BA8F - return and execute $FFFC (the non-LC reset vector).
Note that LC $FFFC is $BA8F
- $BCF0 - input vector, push A, switch to LC, JMP $D009.
- $BCFA - return from LC, pop A, and get input from keyboard.
TEXTALKER.OBJ code
- $D000 - not used
- $D003 - PR#0 or PR#3 code
- $D006 - output code
- $D009 - input code
One thing I have learned is that the output code
does not output to screen, it comes back to $BA88 (only for 40 column
screen), apparently the program can output to 80 column screen from the LC
code. Also, it does not strobe the keyboard to get a character. It only
strobes the keyboard if a character is getting "lost" i.e. control-X or
control-L or a screen review command.
Graphics Program Programmer's Documentation (pixCELLS) 11/11/88
STARTUP The Startup program sets the prefix to
/GRAPHICS, loads the character set file /CHAR.BIN, and then does a BRUN
AUX.BIN. Executing this code initializes many things:
- 1) Checks for 128k system
- 2) Allocates $2C00 in buffer space
- 3) Searches for Echo or Cricket
- 4) Loads Textalker if appropriate
- 5) Removes /RAM from the list of ProDOS devices (to protect
auxiliary memory)
- 5) Move the AUX section of code to $800 in auxiliary memory
and the character sets to $1200-$17FF
- 6) Finally, reset the output pointers to work through the
main memory section in CHAR_OUT in $7000+. Then BRLR is loaded. If this
file is not present, then a new configuration is built-up. If it is
present, then program Main is run. A Closer look at AUX.BIN After the
initial "startup", the following addresses are useful:
- $7012 - hard initialization of the output system
- $7015 - switch to hi-res and clear the screen
- $7018 - message out, poke the number into $0.
- $701B - move $4000-$5FFF onto $2000 (used by View)
- $701E - translate A and Y into pointers $06 and $08
- $7021 - frame grab, display right hand of screen.
- $7024 - move $2000-$3FFF onto $4000 (used by "first
screen")
- $7027 - quit code
- $702A - jump to undo save
- $702D - jump to undo restore
- $7030 - Reload GR.BIN code from $5000 aux
- $7033 - Do a Check sum of the image (result in $346)
- $800 aux - hi-res character output
- $803 aux - part of the message output routine
- $806 aux - undo save (bring 0/4000-0/5FFF into
1/3000-1/4FFF)
- $809 aux - undo restore GR.BIN $7900 - modify graphics
environment
- $7903 - go back after saving a file with ^S
Page 3 Values
- $305 - base x7
- $306 - fat mode flag
- $307 - base x
- $308 - base y
- $309 - X window number
- $30A - Y panel number
- $30B - 0 (part of X table)
- $30C - cells per line
- $30D - 2 times cells per line
- $30E - 0 (part of Y table)
- $30F - lines per page
- $310 - Echo speech #1
- $311 - Echo equipment
- $312 - Echo speech #2
- $313 - Fast speech flag
- $314 - screen output
- $315 - screen normal/hi-res
- $316 - File status (0=start, 40=maybe, 80=changed)
- $317 - saved checksum
- $318 - recent checksum
- $319 - brl keyboard mode
- $31A - open Apple cursor
- $31B - solid Apple cursor
- $31C - length of entire pathname
- $31D - length of pathname prefix
- $31E - unused
- $31F - unused
- $320 - interface sequence
- $330 - graphics on sequence
- $348 - text on sequence
- $360 - multiple start sequence
- $368 - multiple end sequence
- $370 - slot number
- $371 - type
- $372 - secret code (0=normal, 5=Dipner, 6=inkprint Dipner)
- $373 - full graphics flag
- $374 - carriage width
- $374 - form length
- $376 - multiple capability flag
- $377 - extra spaces at start of line (Ohtsuki)
- $378 - need CR before FF (0=no, 40=yes, 80=Cranmer)
- $379 - VersaPoint bug flag
- $37A - unused
- $37B - unused
- $37C - unused
- $37D - unused
- $37E - unused
- $37F - unused Memory Map
- $800-$1FFF - BASIC program
- $2000-$5FFF - hi res pages
- $6000-$6C00 - BASIC variables and ProDOS buffers
- $7000-$73FF - permenent assembly code
- $7700-77FF - messages buffer
- $7900 - GR (modify) code
- $800-$11FF - AUX code
- $1200-$17FF - character sets
- $1800-$27FF - messages
- $2800-$47FF - undo buffer
- $4800-$5AFF - copy of GR (modify code)
- $6000-$8FFF - Textalker code Messages see JK sheet Main Men
Modify Image
- Disk Menu
- Emboss Menu
- Preferences Menu
- Quit pixCELLS
Disk Menu Load Image
- Save Image
- Catalog
- Pathname
- Format Disk
- Install program
- Quit temporarily
- Esc to Main Menu
Preferences Embosser Type
- Interface Card
- Grid Definition
- Braille Keyboard
- Cursor Movement
- Frame Select
- Voice Select
- Esc to Main Menu
Graphics Environment
- Arrows - move cursor
- open Apple plus arrows - move cursor 4 units
- closed Apple plus arrows - move cursor 16 units
- cursor crosses - move and paint, also use Apple keys.
- cursor crosses are the ones around tactile dots
- - select black paint
- + - select white paint
- ^B - braille keyboard
- ^W - Whole disk (reverse, compress, shift or wipe out)
- ^G - grid display
- ^M - cycle through screen modes
- ^F - fill box start (end with erase, reverse or add)
- ^O - outline start (end with add)
- ^Z - undo
- ^S - save image to current filename
KINDS File
- $60 characters/record
- 00-0F - Brailler name
- 10-27 - graphics on sequence
- 28-3F - text on sequence
- 40-47 - multiple copy start sequence
- 48-4F - multiple copy end sequence
- 50 - unused
- 51 - type
- 52 - secret code
- 53 - full graphics
- 54 - carriage width
- 55 - form length
- 56 - multiple copy capability flag
- 57 - extra spaces (Ohtsuki)
- 58 - need CR before FF (0=no, 40=yes, 80=Cranmer)
- 59 - VersaPoint bug flag
- 5A - unused
- 5B - unused
- 5C - unused
- 5D - unused
- 5E - unused
- 5F - unused
- 8000 - VersaPoint
- 8060 - Cranmer
- 80C0 - Dipner Dots
- 8120 - Outsuki
- 8180 - Romeo
- 81E0 - MBOSS-40
- 8240 - Thiel
- 82A0 - RESUS
- 8300 - * (end)
BEX PROGRAM DEVELOPMENT
12/4/86 to 5/5/86
Bugs fixed on Feb. 2 1986 disk
- Auto Print from VersaBraille didn't work. This feature
was not tested at all in BEX. Changed: BASIC program MAIN.
- Underlining feature in the grade two translator didn't
work. A last minute change to the translation table eliminated the special
entry for $$ub. changed: ZQFOR chapter.
- The use of page numbering accidentially reset margins and
indents. Changed: Print module.
- The use of review modes for the first time created some
garbage on the screen. Changed: INOUT.BIN (resident I/O program).
- The voice and video review mode needed some touching up
(slight improvement of display format). Changed: OUT-09.
- The Ohtsuki brailler did not work (output not in upper case
letters). Changed: BASIC program SETCON. [related problem: misspelling of
"Ohtsuki". Changed: SETCON, PRINTCON].
- The copy protection was easily fooled by switching the
slave for the master at the last moment. Changed: START.BIN.
- BEX did not recognize that slot 3 was available for review
modes when some off-brand 80 column cards were used.
- Changed: START.BIN. BEX thought that "unidentified cards"
were "empty slots" (when an empty slot followed the unidentified card).
Changed: START.BIN.
- The configuration process gave inaccurate recommendations
for carriage width for large print when a non-zero "extra spacing" was
specified (pretty obscure, huh?). Changed: SETCON.
- BEX crashed when a question mark was given to the chapter
prompt in the Page Menu. Changed: BASIC program PAGEMENU.
- BEX gave strange on-line documentation for a question mark
to the target chapter name prompt. Changed: programs MAIN and SECOND and
the MESSAGES chapter.
- Name change did not work disk drives other than 1 or 2.
Changed: program SECOND.
- Copy disks needed revised prompts when more than 2 drives
were being used. Changed: program MAIN (boot side) and START.BIN.
- Input through Slot sometimes gave chapters with bogus files
(ABC.@). Changed: program SECOND.
- Write textfile didn't work for a carriage width of 240.
Changed: PRINT module.
- New feature: working with the Sider hard disks. All
applications to the RWTS routine (Read Write Track and Sector on the disk)
need to use the same table, located at $B7E8. Changed: SETCON (set
configuration), PRINTCON (print configuration), INOUT.BIN (set locations
at $B7E8 for RWTS), START.BIN (copy serialization onto hard disk and new
copy disk routine), all the menus (be able to cope with drive numbers with
2 digits), and Textfile Read Module (use the new centralized RWTS table).
Bugs created on Feb. 2 1986 disk
- Read Textfiles from one disk to another crashed because
of changes when doing the Sider features. Multi-function print failed to
set the flag that seperates "printing" from "writing textfiles". As a
consequence, it behaved like$$l0 was set.
Bugs fixed by David on 4/10/86
- Read Textfiles fixed. Changed: program SECOND.
- Multi-function print fixed to properly set the "print/write
flag". Changed: MAIN.
- New feature: the ability to read ProDOS textfiles. Changed:
Read Textfiles module.
- BEX did not recognize an Echo card plugged into slot 3 when
the auxillary slot was used. Changed: START.BIN.
- View a configuration reported "0 disk drives". Changed:
PRINTCON. There have been some scattered reports of BEX disks not copying
properly. Some suspect code from "copy disks" was removed. Changed:
START.BIN.
- VersaBraille transfers not working right. They would not
work at all with the new 2c ROM. After some work, these has been fixed.
The program now gives instructions on what chord sequences to enter.
Program changed to allow a set-up sequence for the VersaBraille. Changed:
Load VB module, Send VB module, program SETCON and program MAIN.
- There was a problem in producing large print with a
Slotbuster interface card. The problem was in how the configuration was
set up. Changed: SETCON.
- There was an error in the specific printer table for the
Microline 92. Changed: chapter PRINTERS on boot side.
- The review modes needed to clear the hi-res screen (so you
can switch from large print to review mode). Changed: OUT-08 and OUT-09.
- In using Replace Characters when it asked "Continue Y", a
lower case "y" was treated as a no answer. Changed: MAIN.
- A number of users have reported problems with set-up
sequences with parallel interface cards. It was determined that BEX was
not setting the 8th bit high. Changed: INOUT.BIN.
- The Page Menu's Rearrange Chapters would fail on large
chapters. It was determined that some arrays were not properly
dimensioned. Changed: PAGEMENU.
- It was determined that the hi-res screen modes were
ingoring bell characters (control-G). Changed: INOUT.BIN.
- The control-T token was accidentially disabled in the print
program. Changed: the Print module.
- The disk drive number for "individually name" target code
clashed with the DOX. Program fixed to agree with our manual. Changed:
MAIN and SECOND.
- Copy disks does not work with a disk that has a non-zero
volume number. Changed: START.BIN
- The new Apple 2c can do software handshakes. We need to
allow use of DECtalk and Postscript (software handshakes only) with the
Apple 2c (and get the control sequences right). Changed: SETCON
- To work with the TED-600, the "old LED driver" has been
modified to allow a user to eliminate the built-in time delay at a form
feed. Changed: SETCON and OUT-05.
- Caryn finished the grade one translator. This has been
integrated into the new 04/07/86 disk. Changed: MOD4 (forward translator
module) and chapter ZQFOR.
- Using regular FID crashes the Sider (if you are using a
Sider). Patched the menu "FID" to use the Sider's Utility.
- Changed: program MAIN on boot side. Using 80 column screen
in the editor did strange things to a right arrow. Changed: INOUT.BIN
- Input through slot lost characters with a slow device (like
the VersaBraille 2). Changed: MOD8
- Adjust pages left a period at the start of a new page.
Changed: MOD10.
- Target code "I" not consistent with the documentation as to
drive numbers. Changed: MAIN and SECOND
- The Sider occasionally locked up and could not read the
data disks anymore. Changed: INOUT.BIN, AND START.BIN.
- The drive prompt very confusing with a two digit "last
drive number". Changed: MAIN on boot side, MAIN on main side, SECOND, and
PAGEMENU.
- Textfile read made smaller BEX pages than the DOX say. The
trigger point to start a new page was increased by 256. Changed: MOD9.
- Contextual Replace started off with each page in "off mode"
instead of just the first page. Changed: MOD3.
- Caryn had a bug caused by a shifting pointer in contextual
replace. Changed: MOD3.
- Init disks and copy disks caused problems after a few
repititions. Changed: MAIN on boot side.
- Drive code "zero" (same drive) was gronked. Changed: MAIN
and SECOND.
- New feature: advanced Whole Disk Catalog (catalog a range
of drives). Changed: PAGEMENU
- Extra form feed during initialize disk questions. Changed:
MAIN on starting side.
- Default drive messed up for transformation chapter.
Changed: MAIN
- Error messages when saving a configuration don't come up.
Changed: SETCON
- Undefined line in Main Menu (5415). Changed: MAIN
- National Braille Press bugs: pause on form feed clash with
restrict printing, and bad PED driver. Changed: MOD2 (print module) and
OUT-06.
- Fixed up circuit card recognition, added 3 more Grappler
cards, the new slotbuster, and the Laser ports (the ports are bogus).
Changed: STARTING.BIN
Bugs fixed on 5/5/86
- Sider would not be configured with Echo on (found by
Fritz). Changed: START.BIN
- Increase dimension of X$ in PAGEMENU
- Display BEX page in "video brailler". Changed OUT-08 and
MAIN.
- Two bugs in ProDOS textfile read: need to clear high bit,
and skipped "TEST2" if "TEST" was previous. Changed: MOD9.
- Replace would not handle lower case for Echo and Apple
plus. Changed: MOD3.
- Crash if just answer "/" to chapter prompt. Changed: MAIN,
SECOND, and PAGEMENU.
- Auto chapters do odd things in Page Menu. Changed:
PAGEMENU.
- Contextual Replace screws up correct use of on and off
string. Changed: MOD3.
- BEX fixed for the LaserWriter Plus. Changed driver program,
added a chapter "FONTS" on Main side, changed PRINTERS chapter on Boot
side to reflect new control-F font system. Changed: OUT-0B, FONTS and
PRINTERS chapters.
Bugs not fixed on 5/5/86
- VersaBraille transfers don't handle the delete key
right
- The control-O problems in the editor have not been fixed
(control-O sometimes says weird stuff, words can be split).
- In addition pitch scan can be confused at the end of a
page.
- No announcement of the new page number is made in the
Editor after doing a control-C control-P.
- The Super Serial Card software does weird things with the
arrow keys and the escape key. There may be no way around this one.
- Adjust pages and the zippy chapter may do strange things.
Some minor problems with the print program which will be fixed with the
new print thinker (control-Y messes up write textfile using $$z, a $$z
prevents writing a textfile with control-Y page break markers, and
sometimes the page markers are not placed at all).
- If a paragraph symbol has an extra space after it, it is
ignored.
- Strange anomoly when an Apple page break occurs at the
point of a braille page number.
Features Desired
- Better control-V mode in the Editor.
- Easy access to the free sector information (especially for
Sider).
- ProntoDOS for the Sider Larry Skutchan's new Textalker
Support for Scat (Slotbuster software)
- Brand new print thinker for BETTE-BEX A new format command
$$sf# to give that number of carriage returns after each form feed.
Files Changed since 12/4/85
- Boot Side
- LOADCON
- SETCON
- PRINTCON
- MAIN (starting menu)
- INOUT.BIN
- START.BIN
- MOD2 (print module)
- MOD3 (global replace)
- MESSAGES chapter
- QUESTIONS chapter
- PRINTERS chapter
- Main Side
- MAIN (main menu)
- SECOND
- PAGEMENU
- MOD2 (print module)
- MOD3 (global replace)
- MOD4 (grade two translator)
- MOD6 (send to VB)
- MOD7 (load from VB)
- MOD8 (input through slot)
- MOD9 (read textfile module)
- MOD10 (adjust pages)
- OUT-05 (old LED driver)
- OUT-06 (PED driver)
- OUT-08 (video braille mode)
- OUT-09 (voice and video mode)
- OUT-0B (Postscript Driver)
- ZQFOR chapter
- FONTS chapter (new)
BEX PROGRAM DEVELOPMENT 5/5/86 to 11/18/86
Cheating: Ex Post Facto Changes
- Load from VersaBraille was found to mess up
capitalization of a file, this fix was done to virtually our entire
inventory of 5/5/86 disks.
- Found that 5 and 10 column display clashed with the
clipboard and other key parameters. (BEX BEXamin problem). Fixed on all
disks internally dated 6/12/86
New Features in BEX 2.2
- New print program: the changes are too massive to even
attempt to list.
- Quite a number of new $$ commands.
- Many bugs removed.
- Page numbering and running heads has been redone.
- The "G" translation program has been overhauled and
upgraded.
- The termination character is placed automatically for a
shift to lower case.
- BEX comes with TEXTALKER 3.1.2.
- BEX functions on a Laser 128 and the new Apple 2gs.
- The Postscript driver (OUT-0B and chapter FONTS) has been
extensively modified to include many new features.
- Contextual Replace now has the caret (^) feature for no
departing charcters.
- A paperless brailler printer can now have a set-up
sequence.
- BEX now has the SCAT program for the Slotbuster installed.
- BEX can work cleanly with the Slotbuster: the user can
choose to configure a printer through the voice, serial, or parallel
ports.
- The brailler selection list has been changed: SAGEM is out,
VersaPoint is taking its place.
- Input through Slot now works with hardware handshakes.
- Pressing "#" at any of the Menus gives the free sector
information.
- The braille keyboard was moved to SDF--JKL.
- With a very minor adjustment, BEX 2.2 can be used with a
RamWorks memory card. (can configure disk systems to slot 3 and to unknown
cards, allow up to 8 drives per slot).
- The list of circuit cards is in a separate file (CARDS.BIN)
so it will be easier to assist people who have cards which are not
recognized.
- There is a new option on the Starting Menu "S" for system
description, to save a disk file containing all kinds of system and
configuration information.
- VersaBraille transfers handle delete key right
- Editor announces the new page when you "Cut Pages".
Bugs Fixed in BEX 2.2
- Read Textfile option when using the "I" target chapter
naming method gave bad prompts: "For chapter XXX" instead of "For textfile
XXX".
- Video braillers (OUT-08 and OUT-09) have been modified to
use the same line numbering system as the new print program.
- Rearrange some array variables in programs MAIN and SECOND
to use up less space; use array DT$ for both DT$ and X$; change DS into
DS% and DT into DT% (the percent arrays use up about half the space of
conventional arrays).
- The incidence of "OUT OF MEMORY ERRORS" should go down
considerably.
- The set up sequence for DECtalk does not work with a Super
Serial Card (forgot to insert a carriage return between two commands).
- The large print driver (OUT-0A) has been modified to throw
away stray control characters.
- Grab a page used to mess up on null pages.
- Print to the screen used to swallow the caret (^).
- Changed "What is in the computer" to read "standard
parameters" instead of "standard switch settings".
- Read textfiles has been modified to be able to scan locked
DOS 3.3 textfiles.
- The copy protection program used to fail when the master
copy had a write protect tab on it.
- The way the "INOUT.BIN" program loads driver programs has
been changed. It used to first indicate that the loading has occurred,
then it loaded the driver. If there was a problem (wrong disk in drive
one, etc.) then BEX would refuse to reload the driver.
- There was a problem with the Super Serial Card and the
enhanced 2e. BEX now forces a "just booted" state on the SSC when BEX is
starting up. In a parallel move, TEXTALKER was changed to get rid of the
"slot 2 fix", since the above mentioned changed should accomplish the same
thing.
- The TEXTALKER currently installed in BEX is a native 3.1.2
with a fix to eliminate the problem of control-E followed by another
control character.
- Fixed problem with Adjust Pages and the zippy chapter.
- Modified START.BIN so BEX can now recognize the new Sider
controller card.
- PED driver has had a number of fixes: need 1 space (not 2)
at the end of a line; shut off attempt at screen display: causes italics
(underlining) to be scrambled.
- VersaBraille transfers handle the delete key right.
- The new page number is announced in the Editor after doing
a control-C control-P.
- Problems with in subsequent pages have been fixed.
- Clash of Merge pages and 20 column display has been fixed.
- View a configuration shows "Review class" correctly.
- View a configuration now show set up sequences.
- What is in the computer says "standard parameters" for
238+241 or 238+240.
- Transfer to VersaBraille uses new protocol for a print page
indicator: (5) (2-5) page # (2-5) (2).
- Allow for two bytes (over 256) for "restart a printout".
- Improve the display of "File List" in the Page Menu for 20
column screen.
- Improve the display of "Printer Sequences" in the Starting
Menu for 20 column screen.
- Editor now checks for a chapter name over 25 characters
Voice output irregularities have been fixed (hopefully) in the Editor
- Fixed Merge chapters in the learner level
- Added a printer entry "ImageWriter 2"
- Fixed braille keyboard clash with the keyboard buffer
Bugs Not Fixed BY 11/18/86
- The Super Serial Card software does weird things with
the arrow keys and the escape key. There may be no way around this one.
- See if it is possible to keep cursor pointers updated
during braille keyboard input.
Features Desired in Upcoming Suplemental
disk
- Be able to copy a printer description from one
configuration to another.
- Be able to modify configurations
- Be able to switch TEXTALKER versions
- Be able to force BEX to recognize circuit cards
- Be able to install the RAMDRIVE software
Files Changed Since 12/4/85
- Boot Side
- LOADCON
- SETCON
- PRINTCON
- MAIN (starting menu)
- INOUT.BIN
- START.BIN
- CARDS.BIN
- MOD1 (editor)
- MOD2 (print module)
- MOD3 (global replace)
- MESSAGES chapter
- QUESTIONS chapter
- PRINTERS chapter
- TEXTALKER.RAM
- TEXTALKER.OBJ
- SCAT.LC
- SCAT.TABLE
- Main Side
- MAIN (main menu)
- SECOND
- PAGEMENU
- MOD1 (editor)
- MOD2 (print module)
- MOD3 (global replace)
- MOD4 (grade two translator)
- MOD6 (send to VB)
- MOD7 (load from VB)
- MOD8 (input through slot)
- MOD9 (read textfile module)
- MOD10 (adjust pages)
- OUT-05 (old LED driver)
- OUT-06 (PED driver)
- OUT-08 (video braille mode)
- OUT-09 (voice and video mode)
- OUT-0A (Large Print driver)
- OUT-0B (Postscript Driver)
- ZQFOR chapter
- FONTS chapter
- VOICE ON chapter
BEX Development
04/13/87 Improvements from 11/18/86 BEX to
4/1/87 BEX
- 1) Many changes to the print program to support
TranscriBEX 2.1 or to eliminate bugs:
- a) fix Write Textfiles bug
- b) fix print page symbols
- c) hit escape to abort printing forces reloading the print
program (if print is the next option selected)
- d) "$$su" is terminated by reload the print program or
"$$D" or T-BEX basic format commands.
- e) For inkprint format, suppress the carriage returns for
any paragraph starting on a page that consists only of headings and
skipped lines (i.e. an "empty page")
- f) skipped line indicatort "$s" does not do extra carriage
return after a "line of dashes" print page indicator.
- g) centering gathers the proper number of characters for
the first (or only) line (i.e. smart centering has been improved, both
braille and inkprint)
- h) A running footer is compatible with TranscriBEX
- i) The commands "$$vlt" and "$$vln" are less dangerous if
an error is made.
- j) A new command "$$mr=" introduced to allow a
simplification of the T-BEX line by line table system
- k) Print program has fewer problems with a zero form length
(the default for write textfiles)
- m) double space fixed for T-BEX
- 2) The translator has been fixed and improved, mostly for
TranscriBEX:
- a) British braille mode no longer hangs the system.
- b) "by", "to", "into" before underlining works (though the
"$$ub" has to be thrown away)
- c) translator does not consider a "translator control" (_o
or _l) to be a "word" while underlining.
- d) better ellipsis, better discretionary hyphens near a
hyphen or dash; better quotes, better use of the letter sign
- e) A word like "UW-Madison" no longer gets the termination
mark
- f) Many problem words fixed plus other translator changes;
see the T-BEX update letter
- 3) Changed the input/output program and the Editor to
permit keyboard buffering with braille keyboard. This works best with
screen modes "L" or "J", works OK with screen mode "N", and terrible with
screen modes "H" or "B".
- 4) Large print problems with Super Serial Card or 2c port
with ImageWrite fixed (on a minority of ImageWriters, things screwed up
after 4-6 pages); Large print works with a Slotbuster 2 (no large print at
all).
- 5) Recognize another Grappler card and the Slotbuster 2.1
card; dropped recognition of the Disco-RAM (OK since BEX 2.2 allows you to
configure an "unknown card" as a disk drive).
- 6) Fixed Video brailler program so there is no clash with a
running footer
- 7) [On shipping disks only; not on update] fixed problem
with the PED driver
- 8) [On shipping disks only; not on update] fixed SETCON so
that spacing between characters works for large print. (previously the
answer to the question was always ignored). New Bugs Introduced with
04/01/87
- 1) Ohtsuki Brailler bug, the upper case does not work.
Users need to add their own "$$su"
- 2) space or <cr> followed by --letter does not
translate the following word. Covered by a newsletter article.
- 3) Large print does not work on slot 1 of the Apple 2c.
Bugs and Glitches in BEX 3.0 06/13/88
- Unable to scan for chapters or textfiles in 2nd half of
the catalog from 3.5 inch disks. On 3.5 inch disks there are 32 sectors of
catalog inforamation instead on only 16 sectors in other storage systems.
[affected files INOUT.BIN and MOD9; fixed in production disks on 11/30/87;
very few disks have this bug]
- BEX crashes on an Apple 2gs that has no memory expansion
card. [affected AUX.BIN; fixed in production 01/06/88; sent fixup disk to
two Canadian customers; this file is also fixed on the ClasX updating
disk]
- Discovered that the BEX Release Notes did not contain the
TEXTALKER for the Apple 2 Plus as it was supposed to [Fixed in production
disks on 01/06/88]
- There is a problem using large print (regular fonts or the
braille font) printing TranscriBEX textbook format material. [affected
OUT-0A; 2 updating disks sent to customers; fixed on ClasX updating disk]
- Problem doing Dipner Dots with the Slotbuster [Affected
SETCON; to date have given one customer verbal instructions on fixing his
disk]
- Discovered that BEX leaves four spaces before a print page
indicator instead of three (TranscriBEX textbook format and no running
heads) [Affected MOD0 and MOD2; fixed in ClasX updating disk]
- When using control-V mode in the Editor, if a line is
exactly 80 characters and it is the end of underlining, then the next line
gets inverse video after the end of the line. [Affected MOD2?; no plans to
fix]
- If you have a "live" "$$" followed by |{}or <del>,
the program can hang or crash. [Affected MOD2; no plans to fix]
- When using Review class printer and voice output, BEX does
not show underlined material as reverse video because of past TEXTALKER
bugs. Now that TEXTALKER 1.3 can deal with reverse video, it would be nice
if BEX showed the presence of underlining in the review class printer
[affected file: OUT-09; no plans to fix]
- In the video brailler crib sheet, the caret (^) is reported
to be dots 4-6 instead of dots 4-5. [Affected OUT-08; no plans to fix]
Dealing with bad BEX Program disks
Classified: SSTIDAAI (So Secret that I don't anything about it)
- Step 1: Boot the disk. If It does boot, go to step 3.
- Step 2: Use the serialization disk. Read the serialization
information. There are three possibilities:
- a) The Read Serialization program may crash. This indicates
a totally wiped out disk (similar to a disks fresh out of the box).
- b) Proper serialization information. The DOS portion of the
disk is damaged or not present. This might mean that a customer is trying
to make a BEX disk out of a BEX data disk (using FID to copy on all the
files).
- c) "xxxx" serizalization information. This indicates that
the disk is NOT a legit copy. The customer is trying to create his own BEX
out of bits and pieces.
- Step 3: Hit control-reset, and type: CATALOG <CR>
- Look at the top line of the catalog. See if the catalog
says "RAISED DOT" followed by the free sector information. If it doesn't,
it indicates that the disk is NOT a legit copy. The customer is trying to
create his own BEX out of bits and pieces. If it does say "RAISED DOT",
check to see if the catalog seems to be a copy of a BEX disk. If not, go
to step 5. If the disk seems OK, go on to step 4.
- Step 4: Reboot the disk and get to the ENTER CONFIGURATION
prompt. Enter S2 for the configuration. Make sure that the serialization
information shows up between the configuration prompt and the Starting
Menu. (If not, another sign of a bogus disk). At the Starting Menu, try to
copy the disk. There are four possibilities:
- a) If it says "Copying authorized by the Pickle Slicer" we
are in deep shit trouble.
- b) If it says "Copying of BEX program aborted", then it is
a legit copy of a BEX disk.
- c) If it says "This is your BEX master disk, you have N
copies left" then the disk was copied by a nibble copier.
- d) If it says "No more copies allowed" it means it was
copied by a nibble copier EXCEPT if we did the disk copying for the
customer. Check the transaction records. If we fixed up their disks once
before, then it is legit.
- Step 5: If there is some strange thing going on which is
not covered by these sketchy instruction, then call in David for a second
opinion.
How We Make Good
For the sake of this discussion, assume that a
customer has said that they totally lost one disk copy. They supply their
master disk (all copied out) and 2 sets of legit copies. The Raised Dot
Computing policy is to believe the customer (there are many legitimate
ways in which a copy can be lost). We will supply a fresh master and 3
sets of copies, all copied out.
- Step 1: Obtain a fresh, BEX disk from the bin down
stairs. Get three flippies from the fresh disk bin.
- Step 2: Use Diveri-copy to copy both sides of BEX onto the
three flippies. Hand label the three copies with something like "BEX Boot,
copy 1", and "BEX Main, copy 1", ETC.
- Step 3: Boot the serialization program. Read the
serialization information from the supplied BEX disk. The program will
prompt "OK to copy to another disk?" answer with the number sign (#)
followed by a carriage return. You will be asked "how many copies?" answer
zero (0) followed by a carriage return. The program will stat putting the
serialization information on the disks. Do all 8 sizes.
- Step 4: The disks are now ready for shipment. Give Nevin
all the supplied disks. Ship the 4 flippies to the customer. Update the
customer transaction records.
Notes on "Spanish Modified" BEX disks
The BEX disks have been modified to boot up with the
Spanish Rules File for the SlotBuster. The Spanish rules are in a binary
file on the boot side called SCAT TABLE. This table is in a special,
BEX-specific format.
If you obtain a new Spanish Rules File, send us a
copy. We will create an updated version of SCAT TABLE to send back to you
with appropriate installation instructions. The TranscriBEX program
describes a specific procedure for improving the quality of braille
formatting and braille procedure. TranscriBEX chapters 8 and 17 explain
how to improve the quality of braille translation. The material in these
chapters can be applied to ordinary use of the BEX braille translator
without using the "TranscriBEX MAKE$ transformation".
The chart on page 17-5 of the TranscriBEX manual gives
the data entry codes for different accented letters. Notice that an e
acute is handled differently in Frech and in Spanish. In most copies of
BEX, we favor the French version. In your copies of BEX, we favor the
Spanish version. Because of this change in the translator, you do not have
to use the SPANISH FIX transformation described in chapter 17 of the
TranscriBEX manual. To produce Spanish braille, start each chapter with
the four characters space, underbar, lower case o, and space ( _o ). This
switches the translator into grade one (preventing English grade two
brialle contractions). For accented letters, use the entry codes shown on
the chart on page 17-5 of the TranscriBEX manual. A question mark (?)
comes out as a "dropped h" in the BEX translator. Spanish uses a "dropped
e" for both the question mark and the upside down question mark. To get
the Spanish version, enter the two characters >? for a question mark.
The grade one translator takes the >? and puts in a "dropped e". The
exclamation mark (!) is the same in English as in Spanish, so there is no
need for any modification. We thought of modifying the BEX translator for
you so that any ? became a "dropped e", but that would prevent the disks
from being able to produce English braille.
On the Main Side of each of the BEX disks is a
transformation chapter called ACCENT which will take text arranged for
data entry and strip out the special codes for making an inkprint copy.
For example, lets say you have a data file called BIOLOGY which has all
the data entry codes for producing grade one Spanish braille. To make an
inkprint copy with the accents placed on the words, do the following:
- Main: R
- Replace Characters
- Chapter: BIOLOGY <CR>
- Chapter: <CR>
- Target chapter: BIOLOGY-P <CR>
- Use transformation chapter: 1ACCENT <CR>
- Continue? Y <CR>
- Chapter BIOLOGY done
- Replaced 89 times
- Main:
If you have any question about using these copies
of BEX to meet your special needs, do not hesitate to contact us at our
technical help line (608) 257-8833.
Producing Press Braille at National Braille
Press Using RDC Software
National Braille Press can do production runs of
interpoint press braille. They create the braille plates using three
versions of Raised Dot Computing software: BETTE 1.40, BEX 2.1 or
TranscriBEX plus BEX 2.2. RDC wants to help people take advantage of NBP's
productive capacity. RDC is acting as a clearinghouse between you and NBP
because we understand the software and formatting issues involved. This
paper explains all the steps required:
- 1) Create formatted braille chapters on disk
- 2) Preview this material at National Braille Press's
carriage width and form length
- 3) Plan how the text divides into volumes
- 4) Write a Disk Diary, using format described in Section 4.
- 5) Contact National Braille Press for an estimate
- 6) Send disks and Disk Diary to Raised Dot Computing for
review
Guidelines for Press Braille
Section 1: How NBP Creates Braille Plates
Raised Dot Computing has supplied National Braille
Press with three programs: BETTE 1.40, BEX 2.1, and TranscriBEX with BEX
2.2. NBP connects an Apple 2c to its Triformation plate embossing device
(PED). These plates are used to emboss press braille. While producing the
plates is expensive, using the plates to emboss paper is relatively
inexpensive. Press braille requires a minimum production run of 50; the
cost per volume decreases with larger production runs.
Raised Dot Computing is acting as a go-between for
National Braille Press. You don't send disks directly to NPB; you send
them to RDC for us to check. We're interesting in encouraging this form of
braille production, so we want to make sure that things go smoothly for
National Braille Press. If you have any questions about how to format or
how to set up your disks, please call Raised Dot Computing.
The RDC software that communicates to NBP's PED only
works for a "magazine format" of 38 characters per line and 28 lines per
page. The finished braille volume is 12-1/2 inches high by 10-1/2 inches
wide. If you must have other formats, please contact Raised Dot Computing.
Section 2: How Press Braille Pages are Numbered
When you use RDC software to communicate with a
Cranmer, MBOSS, VersaPoint or other "personal" braille printer, you don't
have to concern yourself that much with page numbering. You put the
appropriate format commands in your text, and the software creates the
braille text line by line "on the fly."
The situation for press braille is quite different.
Press braille is interpoint braille; braille appears on both sides of most
sheets. Each sheet from the braille press measures 21 inches wide by
12-1/2 inches high; each "sheet" contains 4 braille "pages." After
embossing, sheets are folded in half, gathered together, and stapled in
the middle to create a braille volume 10-1/2 inches wide by 12-1/2 inches
high. Since each sheet contains four braille pages, the number of braille
pages in a volume is
divisible by four.
This fact imposes some constraints on how your text is
divided into volumes, so it's important for you to understand the
relationship between sheets and pages. Suppose you had a very short
document, 12 braille pages long. When produced at NBP, this document would
require 3 sheets. The outside sheet would contain page 1 backed with page
2 and page 11 backed with page 12. The middle sheet has page 3 backed with
page 4 and page 9 backed with page 10. The inside sheet has page 5 backed
with page 6 and page 7 backed with page 8. Once all three sheets are
embossed, they are folded in half and stapled on the fold to create the
booklet. If this concept doesn't make immediate sense to you, make a
sample booklet. Take three sheets of paper, fold them in half and staple
in the center fold. Now braille or write the page numbers sequentially
from 1 to 12, moving from front to back in the stapled booklet. Remove the
staples, and you'll find that the sheets are numbered just as described.
(By the way, a booklet like this is called a "dummy" in the printing
trades. Almost everyone feels like a "dummy" the first time they encounter
this concept.)
Suppose your document was 14 pages long instead of 12.
You can't add just 2 pages, because that would be half a sheet--there's no
way to staple half a sheet. Instead, you must add another sheet, or four
more pages. Fourteen pages of braille text requires 4 sheets, with two
pages left blank. As it happens, press braille traditions dictate that
certain pages in a volume are left blank--more details on this in section
3. All press braille volumes are made up of sheets with this pattern: on
one half of the sheet, you're working up from the lowest page numbers,
while on the other half, you're working down from the highest page
numbers.
A comfortable size for a press braille volume is 120
braille pages, otherwise known as 30 press sheets. Fortunately, you do
have to create a physical "dummy" for work you have
embossed by National Braille Press. But, you must understand two
points:
- 1 - Every page in a press braille volume is counted in
the page numbering, even if the page is actually blank.
- 2 - Right-hand pages are odd; left-hand
pages are even.
Section 3: Formatting Text for NBP
- You must prepare your material with one of the
following software packages from RDC:
- BETTE version 1.40
- BEX version 2.0 or 2.1
- TranscriBEX and BEX 2.2
It is crucially important that you indicate
directly on the data disk which program you used.
Material
formatted by BETTE does not print correctly with TranscriBEX, and vice
versa. Note that BRAILLE-EDIT is NOT on the list. If you do not have one
of these software packages, contact Raised Dot Computing. Your text must be appropriately formatted for output with
a carriage width of 38 and a form length of 28. Configure a braille
previewer (Video Mode Brailler) with a carriage width of 38 and a form
length of 28, and use it to check your format before sending the disks
anywhere. (For information on the Voice and Video or Video Mode Braillers,
see: page 10 of the BETTE Manual; pages 7-2 and 7-3 of the TranscriBEX
Manual; pages U6:5-9 in the User Level BEX Dox.)
Generally, your braille text is formatted for 40 or 41
cells by 25 lines; changing this to 38 cells by 28 lines can affect many
things. You should make sure that long running heads still fit; you should
check that the page breaks are still where you want them. If your document
has a table of contents or index keyed to sequential braille page numbers,
then you must recreate the table of contents or index. If you need help
using the braille previewer options of your software, please contact
Raised Dot Computing.
For press braille, the braille title page is embossed
on the front cover; while this page is
as page 1, its
page number is not embossed there. The inside front cover (page number 2)
and the back cover are traditionally left blank. (You may violate this
tradition if you wish, but you must loudly state that you're doing it in
the Disk Diary.) This means text starts on braille page 3. You must
prepare the title page for each volume as a separate disk chapter. This
chapter will not have page numbering. For the first chapter of actual text
in the first volume, use $$n3 or \\setnumber3 to establish the appropriate
braille page numbering. (If these pages are preliminary pages, then you'll
be starting with roman numeral iii instead of arabic numeral 3. This is
fine, as long as you note this in the Disk Diary, detailed in section 4.)
Most braille volumes contain an inkprint title on the
cover page. The inkprint is printed first, then the sheet is embossed. NBP
can prepare the artwork for this if you wish; you must supply them with
the title text if you want them to do this. Alternatively, you may prepare
camera-ready copy for them to use. The title image area is 11 inches high
by 10 inches wide; no part of the inkprint image may bleed off the edge of
the sheet.
Section 4: Organizing Your Disks and the Disk
Diary
Breaking your text into small chunks makes it possible
for NBP to schedule work flow. When you prepare disks to send to RDC,
limit each chapter to 19 braille pages. (This is less than 20,000
characters or six 3300-character
pages.)
NBP must be able to print each chapter separately.
This means that all relevant format commands must be included at the
beginning of each chapter. If your job is more than one volume, each
volume should be on a separate disk. Usually, all pages in a multi-volume
set are numbered consecutively.
Remember, though, that the first page of text in a
press braille volume is always
The number of braille
pages in each press braille volume is always
at least two less than the total number of pages in that volume. You must
start with a number divisible by four: 132, 128, 124, and 120 are good
beginning places. Subtract two for the blank pages on the back of the
title page and the back of the volume. The maximum number of pages
containing braille text is then 130, 126, 122, or 118. When using BEX 2.0
or 2.1, use $$np to establish braille page numbering and $$n# to set the
braille page number. For example, if the first chapter contains braille
pages 3 through 20, the second chapter must start out: $$np$$n21.
When you are using BETTE or TranscriBEX, each chapter
must begin with all the relevant \\ commands: \\bookformat or
\\textbookformat, any \\runninghead or \\pp command, and the appropriate
\\setnumber command. However, you do
send the \\ chapters
to NBP; you always send a copy of the final formatted braille chapters.
The Disk Diary: List of Disks, Chapters, and Braille Page Numbers Copy all
your chapters to freshly initialized disk(s) in the order you want them
printed. (NEVER send original disks: send a copy!) All
chapters on the disk should be text you want embossed; don't include any
other chapters. Name the chapters so each ends with a unique character
indicating its order. For example SECTION-1, SECTION-2, etc. or PART-A,
PART-B, PART-C, etc.
Prepare a separate chapter for the title page of each
braille volume. If you have preliminary pages with distinct page
numbering, then they should also be in a separate chapter. Each braille
volume should be on a separate disk. Each chapter must begin with an
page number. This step helps you make sure that your text
divides correctly into press braille volumes.
Prepare a Disk Diary that shows each disk and its
label. For each disk, list each chapter name and the braille page numbers
it creates. Note which pages are blank. If you are "breaking tradition" by
putting text on the back of the title page or the back cover, clearly
state this in the Disk Diary.
Here's a sample Disk Diary for a three-volume job.
Each volume begins with preliminary pages with roman numeral page
numbering; arabic page numbering continues throughout the job. Page
numbers shown in parentheses are not embossed on the page.
- Disk Name: M. J. Prude 1 of 3
- Chapter Name * Braille Page Nos.
- VOL1 TITLE -- (i)
- Note: The back of the title page is blank, but it's still
counted as page ii
- PRELIMS 1 -- iii - xxii
- Note: Total of 22 preliminary pages, including title
- SECTION 2 -- 1 - 20
- SECTION 3 -- 21 - 42
- SECTION 4 -- 43 - 62
- SECTION 5 -- 63 - 84
- SECTION 6 -- 85 - 96
- Note: The last two pages in the first volume are blank,
they're still counted as 97 and 98. 96 text pages plus 2 blank pages plus
22 preliminary pages (including title and blank page ii) equals 120 total
pages or 4 times 30. Disk Name: M. J. Prude 2 of 3
- VOL2 TITLE -- (i)
- PRELIMS 7 -- iii - vii
- Note: page viii is blank; total of 8 preliminary pages
- SECTION 8 -- 99 - 120
- SECTION 9 -- 121 - 140
- SECTION 10 -- 141 - 160
- SECTION 11 -- 161 - 180
- SECTION 12 -- 181 - 200
- SECTION 13 -- 201 - 204
Note: The last two pages of the second volume are
blank, but still counted as pages 205 and 206. 206 minus 99 equals 107;
107 plus 1 (for page 99 itself) equals 108 text pages. 108 plus 8
preliminary pages equals 116 or 4 times 29. Disk Name: M. J. Prude 3 of 3
- VOL3 TITLE -- (i)
- PRELIMS 14 -- iii - vi
- Note: Total of 6 preliminary pages
- SECTION 15 -- 207 - 226
- SECTION 16 -- 227 - 246
- SECTION 16 -- 247 - 266
- SECTION 17 -- 267 - 285
Note: The last three pages, 286 through 288, in
the third volume are blank. 288 minus 207 equals 81; 81 plus 1 equals 82;
82 pages plus 6 preliminary pages equals 88 or 4 times 22. To create this
Disk Diary, you must print each chapter to the preview brailler and note
the starting and ending braille pages. (When you're using BETTE or
TranscriBEX, make sure you check each chapter
If you print two chapters in a row, then the format information from the
first carries over to the second. You must be sure that each chapter can
stand on its own--you must clear information in the print formatter in
between chapters.
Here's a quick way to do this: after you print a
chapter, choose option E at the Main Menu. Just press Return when prompted
for a chapter to edit, then choose P again. This
the
Print program into memory, so you start out with a clean slate.)
With a label like "1 of 3," each disk clearly states
how many disks comprise the job. There's also no doubt about what order
the chapters should be printed in.
You must provide both print and braille versions of
the Disk Diary when you send your disks to Raised Dot Computing.
Section 5: Calling for an Estimate
When (and only when) you have created your Disk Diary,
you have enough information to call for an estimate. Call National Braille
Press at 617-266-6160 and ask to speak with Phyllis Campana. Tell her the
specifics of the job: how many braille pages divided into how many
volumes; approximately when the disks will be sent to RDC; if you want a
press proof; if you want NBP to proofread; when you need the final
volumes.
She can prepare an estimate for various quantities. To
save both of you time, ask for a range of estimates to cover the
possibilities. For example, if you think you probably need 100 copies of a
document, ask for estimates for 75, 100, 125, and 150. If you request it,
you may obtain a press proof. This is a single copy of each page made
(manually) from the punched plates. A press proof is additional, so be
sure to mention that you want it when you call for an estimate.
If you do wish to change something, be aware that you
will be charged to repunch the plate. Alternatively, you may pay NBP to
proofread for you. If you decide midway through a job to cancel, NBP must
still be compensated for the time, effort, and materials used. This "kill
fee" is normally 50% of the estimate.
Section 6: Send Disks to RDC
To facilitate the whole process, RDC
check the disk(s) before we send them to NBP. RDC is
checking for any software-related problems and major formatting
irregularities. We are not proofreading the braille text;
we
are just making sure that you've understood how to format it correctly.
After you've sent us disks, please don't call us with "just a few changes
on page 36." We consider the text you send to us as your
unalterable version.
If we encounter any trouble with your disk, we will
notify you of the problem. Do not send a disk to NBP without clearing it
with us; NBP will simply send the disk back to you. When you send your
disks to RDC, please include the following items:
- 1) The disk or disks, clearly labelled in print and
braille
- 2) The cover artwork or the text of the title page for NBP
to use in preparing the cover artwork
- 3) A cover letter in both print and braille (or as RDC
chapters on disk) that includes the following:
- a) What software was used (BETTE, BEX 2.0 or 2.1, or
TranscriBEX)
- b) How many copies you want
- c) The Disk Diary list of disks, chapters, and braille page
numbers
- d) Which pages in each volume should be blank RDC will
contact you within 7 working days of receiving this packet. Most of the
time, everything will be just fine. We'll notify you that we've sent the
package along to National Braille Press. If there are problems with your
disks, we'll send them back to you for reformatting. Examples of
"problems" are: wrong number of pages in volume; blank pages not noted in
Disk Diary; running head too long for 38 cells; each chapter cannot be
printed as independent entity.