126 lines
2.8 KiB
Plaintext
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
|