mirror of
https://github.com/phooky/Apple-410.git
synced 2024-06-12 14:29:28 +00:00
Compare commits
2 Commits
e423b7d1a0
...
1b05e9edb5
Author | SHA1 | Date | |
---|---|---|---|
|
1b05e9edb5 | ||
|
67ef6ce139 |
412
docs/Apple 410 Plotter.md
Normal file
412
docs/Apple 410 Plotter.md
Normal file
|
@ -0,0 +1,412 @@
|
|||
# The Apple 410 Color Plotter
|
||||
|
||||
## Quick introduction and apology
|
||||
|
||||
Everything below (other than the dip switch settings) was sussed out by
|
||||
ripping the ROM, extracting the self-test script and the command lookup table, and
|
||||
trial and error. Now that the manual is included in this folder, this could possibly
|
||||
be updated.
|
||||
|
||||
## General concepts
|
||||
|
||||
The way the 401 interprets a coordinate at any given time depends on the current
|
||||
viewport and window settings. The "viewport" is a rectangle specified in hardware
|
||||
absolute coordinates and defines the physical area in which coordinates are resolved.
|
||||
The "window" defines the virtual coordinates of the drawing area, which are then
|
||||
mapped to the viewport.
|
||||
|
||||
All drawing operations are clipped to the current viewport and window; parts of
|
||||
arcs, circles, lines, etc. that would be rendered outside the viewport are not
|
||||
drawn.
|
||||
|
||||
If the size of the window has a different aspect ratio than the size of the viewport,
|
||||
the elements drawn will be stretched to fit. You can use this mechanism to draw ellipses
|
||||
or stretched text.
|
||||
|
||||
Commands sent to the 401 are terminated by the ASCII "end of text" delimiter, 0x03.
|
||||
A semicolon or newline may also be used in some situations; however it's safest to
|
||||
terminate a text-writing command (PL) with 0x03.
|
||||
|
||||
## Units
|
||||
|
||||
The base units for the viewport (as used in the VP command) are approximately 1 unit
|
||||
= 0.1mm. (In practice, this is slightly off, so I don't recommend drawing any rulers
|
||||
with this machine.)
|
||||
|
||||
### Serial connection
|
||||
|
||||
The 8 DIP switches (SW1-SW8) on the back of the plotter are used to configure the
|
||||
serial interface.
|
||||
|
||||
SW1 selects the data bits. ON = 7 bits, OFF = 8 bits.
|
||||
|
||||
SW2 selects whether parity is used. ON = no parity bit, OFF = use a parity bit.
|
||||
If parity is selected, SW3 determines the type of parity bit. ON = odd parity,
|
||||
OFF = even parity.
|
||||
|
||||
SW4 and SW5 select the number of stop bits:
|
||||
|
||||
| SW4 | SW5 | Stop bits |
|
||||
|------|------|---------------|
|
||||
| OFF | OFF | 2 stop bits |
|
||||
| ON | OFF | 1.5 stop bits |
|
||||
| OFF | ON | 1 stop bit |
|
||||
| ON | ON | invalid |
|
||||
|
||||
SW6, SW7, and SW8 select the baud rate:
|
||||
|
||||
| SW6 | SW7 | SW8 | Baud |
|
||||
|-----|-----|-----|------------|
|
||||
| OFF | OFF | OFF | 75 baud |
|
||||
| OFF | OFF | ON | 150 baud |
|
||||
| OFF | ON | OFF | 300 baud |
|
||||
| OFF | ON | ON | 600 baud |
|
||||
| ON | OFF | OFF | 1200 baud |
|
||||
| ON | OFF | ON | 2400 baud |
|
||||
| ON | ON | OFF | 4800 baud |
|
||||
| ON | ON | ON | 9600 baud |
|
||||
|
||||
**The 401 uses hardware handshaking.** It never returns data to the computer
|
||||
over the serial line and sets DSR when its internal buffer is full. Sending even
|
||||
one byte after the DSR line has been set will corrupt the 401's command buffer
|
||||
and trigger an error. Most USB to RS232 cables will attempt to bundle up several
|
||||
bytes before transmission, so unless you're sure that your cable can handle it
|
||||
I recommend flushing the serial connection after every byte and checking the DSR
|
||||
line yourself.
|
||||
|
||||
## Command Reference
|
||||
|
||||
### Move Absolute (MA)
|
||||
|
||||
```
|
||||
MAx,y
|
||||
```
|
||||
|
||||
Raise the pen and move the plotter head to the position specified by the x,y coordinates.
|
||||
|
||||
Params: 2
|
||||
|
||||
### Move relative (MR)
|
||||
|
||||
```
|
||||
MRx,y
|
||||
```
|
||||
|
||||
Raise the pen and move the plotter head to a position offset x,y from its
|
||||
current position.
|
||||
|
||||
Params: 2
|
||||
|
||||
### Draw absolute (DA)
|
||||
|
||||
```
|
||||
DAx,y(,x,y..)
|
||||
```
|
||||
|
||||
Lower the pen and draw a line from the current position to the position
|
||||
specified by the x,y coordinates. If more than one coordinate pair is
|
||||
specified, continues to draw lines to the subsequent points as well.
|
||||
|
||||
Params: 2(+2*n)
|
||||
|
||||
### Draw relative (DR)
|
||||
|
||||
```
|
||||
DRx,y(,x,y..)
|
||||
```
|
||||
|
||||
Lower the pen and draw a line from the current position to the position
|
||||
offset x,y for its current position. If more than one coordinate pair is
|
||||
specified, continues to draw lines to the subsequent offset points as well.
|
||||
|
||||
Params: 2(+2*n)
|
||||
|
||||
### Circle (CA)
|
||||
|
||||
```
|
||||
CAr(,x,y)
|
||||
```
|
||||
|
||||
Lower the pen and draw a circle of radius r centered at x,y. If x,y are not
|
||||
specified the circle will be centered at the current position.
|
||||
|
||||
Params: 1 or 3
|
||||
|
||||
### Letter Initialize (LI)
|
||||
|
||||
```
|
||||
LI
|
||||
```
|
||||
|
||||
Reset the text format.
|
||||
|
||||
### Letter size (LS)
|
||||
|
||||
```
|
||||
LSs
|
||||
```
|
||||
|
||||
Sets the font size to s (?? in what units? relative to what system of coordinates? ??)
|
||||
|
||||
Params: 1
|
||||
|
||||
### Letter rotation (LR)
|
||||
|
||||
```
|
||||
LRθ
|
||||
```
|
||||
|
||||
Sets the angle to draw subsequent text at θ degrees clockwise.
|
||||
|
||||
Params: 1
|
||||
|
||||
### Print letters (PL)
|
||||
|
||||
```
|
||||
PLtext
|
||||
```
|
||||
|
||||
Lower the pen and draw the specified text at the current position,
|
||||
using the currently active letter size and rotation settings.
|
||||
|
||||
Params : 1 (string)
|
||||
|
||||
### Pen select (PS)
|
||||
|
||||
```
|
||||
PSi
|
||||
```
|
||||
|
||||
Select pen i (where i is in the range 1-4).
|
||||
|
||||
Params: 1
|
||||
|
||||
### Line type (LT)
|
||||
|
||||
```
|
||||
LTp(,k)
|
||||
```
|
||||
|
||||
Select the line style for subsequent draw operations. `p` is a value in the
|
||||
range 1-9:
|
||||
|
||||
| n | Line style |
|
||||
|---|------------------|
|
||||
| 0 | Custom pattern (see UL) |
|
||||
| 1 | Solid |
|
||||
| 2 | Dotted |
|
||||
| 3 | Short dash |
|
||||
| 4 | Medium dash |
|
||||
| 5 | Long dash |
|
||||
| 6 | Line w/ dots |
|
||||
| 7 | Line w/ one short dash |
|
||||
| 8 | Line w/ two dots |
|
||||
| 9 | Line w/ two short dashes |
|
||||
|
||||
`k` specifies the repeat length in mesurement units. The default is 100, but the value will persist.
|
||||
|
||||
Params: 1 or 2
|
||||
|
||||
```
|
||||
ULd1,m1(,d2,m3,..d6,m6)
|
||||
```
|
||||
|
||||
Create a custom pattern for use with subsequent LT0 operations.
|
||||
|
||||
`d` specifies a draw length, `m` specifies a move length.
|
||||
|
||||
|
||||
### X-axis ticks (XT)
|
||||
|
||||
```
|
||||
XTs,d,n,a,b
|
||||
```
|
||||
|
||||
Draw an X axis with tick marks as specified. There are two "styles"
|
||||
`s` of input available, which determine how the distance `d` parameter
|
||||
is interpreted.
|
||||
|
||||
| parameter | function |
|
||||
|-----------|---------------------------------------|
|
||||
| s | style |
|
||||
| d | distance |
|
||||
| n | number of tick marks |
|
||||
| a | length of tick mark above the axis |
|
||||
| b | length of tick mark below the axis |
|
||||
|
||||
The `s` parameter determines how the `d` parameter is interpreted and whether
|
||||
the first tick mark (at the "0" point on the axis) is drawn or not:
|
||||
|
||||
| style parameter | description |
|
||||
|------------------|-------------------------------------|
|
||||
| 0 | d is distance between ticks |
|
||||
| 1 | d is total length of axis |
|
||||
| 2 | d is distance between ticks, first tick mark is not drawn |
|
||||
| 3 | d is total length of axis, first tick mark is not drawn |
|
||||
|
||||
Params: 5
|
||||
|
||||
### Y-axis ticks (YT)
|
||||
|
||||
```
|
||||
YTs,d,n,a,b
|
||||
```
|
||||
|
||||
Draw a Y axis with tick marks as specified. The parameters are handled
|
||||
in the same manner as the `XT` command (see above).
|
||||
|
||||
Params: 5
|
||||
|
||||
### Clear/Reset (CH)
|
||||
|
||||
```
|
||||
CH
|
||||
```
|
||||
|
||||
Raise the pen and move the plotter head to its original position; usually used
|
||||
at the end of a plot.
|
||||
|
||||
Params: 0
|
||||
|
||||
### Point mark (PM)
|
||||
|
||||
```
|
||||
PMt
|
||||
```
|
||||
|
||||
Draw a marker at the current position. The marker type is specified by the `t`
|
||||
parameter. The marker size is determined by the font size setting specified by the
|
||||
`LS` command; consider the markers as just special characters.
|
||||
|
||||
The various marker shapes are illustrated in the images below.
|
||||
|
||||
![Image of PM1-5](pm1-5.jpg) ![Image of PM6-10](pm6-10.jpg) ![Image of PM11-15](pm11-15.jpg)
|
||||
|
||||
Params: 1
|
||||
|
||||
### Pen velocity (PV)
|
||||
|
||||
```
|
||||
PVv
|
||||
```
|
||||
|
||||
Sets the drawing velocity `v`, on a scale of 1-10, where 1 is slowest, 10 is fastest.
|
||||
The default speed is 10.
|
||||
|
||||
Params: 1
|
||||
|
||||
### Slant lettering (SL)
|
||||
|
||||
```
|
||||
SLθ
|
||||
```
|
||||
|
||||
Slants subsequent text by an angle specified by `θ` degrees.
|
||||
|
||||
Params: 1
|
||||
|
||||
### Viewport (VP)
|
||||
|
||||
```
|
||||
VPx1,y1,x2,y2
|
||||
```
|
||||
|
||||
Specifies the viewport area, in absolute coordinates, to draw in. See the introduction
|
||||
for an explanation of how the viewport is used. `x1,y1` specify the upper left hand corner
|
||||
of the viewport; `x2,y2` specify the lower right hand of the viewport.
|
||||
|
||||
Params: 4
|
||||
|
||||
### Window (WD)
|
||||
|
||||
```
|
||||
WDx1,y1,x2,y2
|
||||
```
|
||||
|
||||
The window into which to draw. See the introduction for an explanation of how the window
|
||||
is used. `x1,y1` specify the upper left hand corner
|
||||
of the window; `x2,y2` specify the lower right hand of the window.
|
||||
|
||||
Params: 4
|
||||
|
||||
### Reset (RS)
|
||||
|
||||
```
|
||||
RS
|
||||
```
|
||||
|
||||
Resets the error bit. If the error LED is lit, it should be extinguished.
|
||||
|
||||
RS will apparently accept some parameters, but it's unknown if this does anything.
|
||||
|
||||
Params: 0 or 1
|
||||
|
||||
### Arc (AC)
|
||||
|
||||
```
|
||||
ACr,θ1,θ2(,x,y)
|
||||
```
|
||||
|
||||
Draws a circular arc of radius `r` from `θ1` to `θ2`. If x,y are specified, they
|
||||
determined the center of the arc's circle. If they are not specified, the current
|
||||
position is considered to be the center of the arc's circle.
|
||||
|
||||
After the arc is drawn, the endpoint of the arc is considered to be the new position.
|
||||
|
||||
Params: 3 or 5
|
||||
|
||||
### Error action (IM)
|
||||
|
||||
```
|
||||
IMa(,b)
|
||||
```
|
||||
|
||||
Selecting error action
|
||||
|
||||
`a` specifies the mode: 0 = turn on error light; 64 = reject commands ; 192 = write message.
|
||||
|
||||
| a | Mode |
|
||||
|---|------------------|
|
||||
| 0 | Turn on error light |
|
||||
| 64 | Reject command |
|
||||
| 192 | Write error message |
|
||||
|
||||
Do note that "write message" does not mean to send a response over the serial port; it means
|
||||
that it will literally write the error message out on the plotter.
|
||||
|
||||
`b` specifies the errors to filter. Default is 31.
|
||||
|
||||
| a | Error type |
|
||||
|---|------------------|
|
||||
| 1 | Command not recognized |
|
||||
| 2 | Numbers outside range |
|
||||
| 4 | Not enough numbers for command |
|
||||
| 8 | Bad syntax |
|
||||
| 16 | Pen would go outside window |
|
||||
|
||||
### Size Paper (SP)
|
||||
|
||||
```SPn```
|
||||
|
||||
Sets the current paper size. This is essentially a preset "VP" command. The table below of
|
||||
drawing area sizes is approximate, based on measuring a rectangle drawn at the extent of the
|
||||
entire viewport.
|
||||
|
||||
| n | measurement (in mm) |
|
||||
|---|---------------------|
|
||||
| 0 | 241 x 175 |
|
||||
| 1 | 178 x 240 |
|
||||
| 2 | 394 x 240 |
|
||||
| 3 | 282 x 280(?) |
|
||||
| 4 | 259 x 170 |
|
||||
| 5 | 171 x 280(?) |
|
||||
| 6 | 326 x 217 |
|
||||
| 7 | 218 x 142 |
|
||||
| 8 | 143 x 217 |
|
||||
|
||||
## Unknown commands
|
||||
|
||||
PK - ??? - no params/arb (Not in user reference)
|
||||
|
||||
LF - ??? - 1 param ? 0-9 Letter Font
|
||||
|
BIN
docs/Apple410Plotter.PDF
Executable file
BIN
docs/Apple410Plotter.PDF
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user