Files
SyncHome/trunk/workspace/gcb/16c84-mouse.gcb
2023-03-09 12:51:54 +00:00

126 lines
2.8 KiB
Plaintext

' ########### start ###########
' pic:PIC16C84
' ########### end ###########
'----------------------------------------------------------------------
' Mouse adapter for Atari ST and AMIGA
' 2018-02-15 (c) Paolo Iocco
'
' Circuit diagram
' ---------------
' ATTiny84
' +-----+
' VCC-------->|° |<--------GND
' PB0-------->| |<--------PA0
' PB1-------->| |<--------PA1
' PB3/Reset-->| |---------PA2
' PB2---------| |---------PA3
' PA7---------| |---------PA4 SCK
' PA6 MOSI----| |---------PA5 MISO
' +-----+
'
' schematic ATARI ST
'
' +°--\ /---+
' Y_AXE------>|RA2 RA1|<--|10K|<-- NC
' X_AXE------>|RA3 RA0|<--|10K|<-- NC
' LB DB.6---->|RA4 O2|<----RC Oscillator
' +5V--|50K|-->|RES O1|-
' GND-------->|5 14|<--------+5V
' RB DB.9---->|RB0 RB7|-
' -|RB1 RB6|-
' YB DB.4---->|RB2 RB5|-----DB.1 XB
' YA DB.3---->|RB3 RB4|-----DB.2 XA
' +---------+
'----------------------------------------------------------------------
'
' DB9 STANDARDS
' ~~~~~~~~~~~~~
'
' Atari ST AMIGA
'
' +---------> YB +---------> XB
' | +-------> YA | +-------> YA
' | | +-----> XA | | +-----> XA
' | | | +---> XB | | | +---> YB
' | | | | | | | |
' _____________ _____________
' 5 \ x o o o o / 1 5 \ x o o o o / 1
' \ o o o o / \ o o o o /
' 9 `~~~~~~~' 6 9 `~~~~~~~' 6
' | | | | | | | |
' | | | +----> Left Button | | | +----> Left Button
' | | +------> Power | | +------> Power
' | +--------> Ground | +--------> Ground
' +----------> Right Button +----------> Right Button
'Chip model
'#chip tiny84a, 8
#Chip 16C84, 4.19
#Config OSC = HS, WDT = OFF, PWRTE = ON, CP = OFF
#define X_AXE PORTA.3
#define Y_AXE PORTA.2
#define XB PORTB.5
#define XA PORTB.4
#define YA PORTB.3
#define YB PORTB.2
#define LB PORTA.4
#define RB PORTB.0
setup:
loop:
Do
Pot X_AXE, x_val
Pot Y_AXE, y_val
select case x_val
case <= 120
set XA on
wait 1 ms
set XB on
wait 1 ms
set XA off
wait 1 ms
set XB off
wait 1 ms
case >= 135
set XB on
wait 1 ms
set XA on
wait 1 ms
set XB off
wait 1 ms
set XA off
wait 1 ms
case else
set XA off
set XB off
end select
select case y_val
case <= 120
set YA on
wait 1 ms
set YB on
wait 1 ms
set YA off
wait 1 ms
set YB off
wait 1 ms
case >= 135
set YB on
wait 1 ms
set YA on
wait 1 ms
set YB off
wait 1 ms
set YA off
wait 1 ms
case else
set YA off
set YB off
end select
Loop