Post-It Computer Code
‘ {$STAMP BS2} Change for your Stamp Type, recommend one of the faster stamps. ‘ {$PBASIC 2.5} Black CON 0...
‘ {$STAMP BS2} Change for your Stamp Type, recommend one of the faster stamps.
‘ {$PBASIC 2.5}
Black CON 0
White CON 255
Blue CON 3
Green CON 28
Red CON 224
Cyan CON Blue + Green
Yellow CON Green + Red
Magenta CON Blue + Red
Reset PIN 3 ‘ Connect ALL P0-P3 pins with 10K resistors
SData PIN 2
SClock PIN 1
CS PIN 0
dat VAR Byte
ctr VAR Word ‘ Used in InitLCD & Clear subroutines
x VAR Byte ‘ X-Coordinate (0 to 129)
y VAR Byte ‘ Y-Coordinate (0 to 129)
color VAR Byte ‘ Color to plot
‘ PAK-XI commands
PASSMODE CON 1 ‘ Only send position when asked (default)
ACTMODE CON 2 ‘ Send position when button clicked (not very useful for Stamp)
CLRCTR CON 3 ‘ Clear X,Y counters and button latch
CLRALL CON 4 ‘ Same as CLRCTR but also clears input buffer
GETPKT CON 5 ‘ Send X,Y, button latch packet (5 bytes: Xhigh, Xlow, YHigh, Ylow, Status)
GETPKTZ CON 7 ‘ Same as GETPKT but also clears counters
NORMMODE CON 9 ‘ Normal mode (same as pulling IMODE high), resets PAK
RAWMODE CON 10 ‘ Raw mode (same as grounding IMODE), resets PAK
ESC CON 11 ‘ Send next byte directly to mouse
INIT CON 13 ‘ Initialize mouse
LATCH CON 15 ‘ Read button latch and clear it
PAKRESET CON 255 ‘ Full reset
‘ Bits in status byte
YOVERMASK CON $80 ‘ Y overflow
XOVERMASK CON $40 ‘ X overflow
YSIGNMASK CON $20 ‘ Y Sign (1=negative)
XSIGNMASK CON $10 ‘ X Sign (1=negative)
‘MIDBMASK CON 4 ‘ Middle button (note: some mice won’t activate middle button w/o special commands)
RIGHTMASK CON 2 ‘ Right button
LEFTMASK CON 1 ‘ Left Button
OPIN CON 8 ‘ Output to PAK-Pin P8
IPIN CON 9 ‘ Input from PAK-Pin P9
FPIN CON 13 ‘ Flow control
BAUD CON 240 ‘ Baud rate (9600) CHANGE FOR OTHER BS
CPIN CON 200 ‘ DPI of the mouse (could be 800 or 200)
FRACIN CON 25 ‘ .0025 inch per count
‘ Temporary words/bytes
TW VAR Word
TB0 VAR TW.HIGHBYTE
TB1 VAR TW.LOWBYTE
TB2 VAR Byte
TB3 VAR Byte
‘ X&Y Raw counts
XRAW VAR Word
YRAW VAR Word
‘ X&Y Position
Xpos VAR Word
Ypos VAR Word
Start:
GOSUB InitLCD
GOSUB Clear
‘ Reset PAK-XI
SEROUT OPIN,BAUD,[PAKRESET]
PAUSE 500 ‘ Wait for it to happen
‘Main Loop for Reading Trackpad Input
DO
‘ Get position report
SEROUT OPIN,BAUD,[GETPKT]
SERIN IPINFPIN,BAUD,[XRAW.HIGHBYTE, XRAW.LOWBYTE, YRAW.HIGHBYTE, YRAW.LOWBYTE, TB2]
‘DEBUG “x=”, SDEC W4, ” y=”, SDEC W5, ” status=”, HEX TB2, CR
Xpos=ABS(XRAW/CPIN)
IF Xpos>130 THEN Xpos=129
Ypos=ABS(YRAW/CPIN)
IF Ypos>130 THEN Ypos=129
‘DEBUG “X=”, DEC Xpos, ” Y=”, DEC Ypos, CR
‘Insert Plot Commands
x=Xpos
y=Ypos
color=Blue
GOSUB Plot
LOOP
END
SendCommand:
SHIFTOUT SData, SClock, MSBFIRST, [01, dat8]
RETURN
SendData:
SHIFTOUT SData, SClock, MSBFIRST, [2551, dat8]
RETURN
InitLCD:
HIGH CS
PAUSE 10
HIGH SClock
LOW SData
LOW Reset
PAUSE 1
Reset = 1
PAUSE 20
CS = 0
dat = $CA : GOSUB SendCommand
dat = $03 : GOSUB SendData
dat = 32 : GOSUB SendData
dat = 12 : GOSUB SendData
dat = $00 : GOSUB SendData
dat = $BB : GOSUB SendCommand
dat = $01 : GOSUB SendData
dat = $D1: GOSUB SendCommand
dat = $94 : GOSUB SendCommand
dat = $81 : GOSUB SendCommand
dat = 5 : GOSUB SendData
dat = $01 : GOSUB SendData
dat = $20 : GOSUB SendCommand
dat = $0F : GOSUB SendData
PAUSE 100
dat = $A7: GOSUB SendCommand
dat = $BC : GOSUB SendCommand
dat = $00 : GOSUB SendData
dat = 0 : GOSUB SendData
dat = $01 : GOSUB SendData
dat = $00 : GOSUB SendData
dat = $CE : GOSUB SendCommand
dat = 0 : GOSUB SendData
dat = 2 : GOSUB SendData
dat = 4 : GOSUB SendData
dat = 6 : GOSUB SendData
dat = 8 : GOSUB SendData
dat = 10 : GOSUB SendData
dat = 12: GOSUB SendData
dat = 15 : GOSUB SendData
dat = 0 : GOSUB SendData
dat = 2 : GOSUB SendData
dat = 4 : GOSUB SendData
dat = 6 : GOSUB SendData
dat = 8 : GOSUB SendData
dat = 10 : GOSUB SendData
dat = 12 : GOSUB SendData
dat = 15 : GOSUB SendData
dat = 0 : GOSUB SendData
dat = 5 : GOSUB SendData
dat = 10 : GOSUB SendData
dat = 15 : GOSUB SendData
dat = $25 : GOSUB SendCommand
dat = $AF : GOSUB SendCommand
PAUSE 200
FOR ctr = 0 TO 130
dat = $D6 : GOSUB SendCommand
NEXT
RETURN
Plot:
dat = $75 : GOSUB SendCommand
dat = y : GOSUB SendData
dat = 131 : GOSUB SendData
dat = $15 : GOSUB SendCommand
dat = x : GOSUB SendData
dat = 129 : GOSUB SendData
dat = $5C : GOSUB SendCommand
dat = color : GOSUB SendData
RETURN
Clear:
x = 0 : y = 0: color = Yellow: GOSUB Plot
FOR ctr = 1 TO 17424
SHIFTOUT SData, SClock, MSBFIRST, [2551, dat8]
NEXT
RETURN