mirror of
https://github.com/freitz85/AppleIIMouse.git
synced 2025-02-11 06:30:55 +00:00
323 lines
8.3 KiB
ArmAsm
323 lines
8.3 KiB
ArmAsm
* = 0000
|
|
0000 2C 58 FF BIT $FF58 ; set overflow, clear carry
|
|
0003 70 1B BVS $0020 ; jump to $20
|
|
0005 38 SEC ; Signature byte?
|
|
0006 90 18 BCC $0020
|
|
0008 B8 CLV ; Signature byte?
|
|
0009 50 15 BVC $0020
|
|
000B 01 ; Signature byte
|
|
000C 20 ; device signature XY-Input device
|
|
000D F4 ???
|
|
000E F4 ???
|
|
000F F4 ???
|
|
0010 F4 ???
|
|
0011 00 BRK
|
|
0012 B3 ; SETMOUSE offset
|
|
0013 C4 ; SERVEMOUSE offset
|
|
0014 9B ; READMOUSE offset
|
|
0015 A4 ; CLEARMOUSE offset
|
|
0016 C0 ; POSMOUSE offset
|
|
0017 8A ; CLAMPMOUSE offset
|
|
0018 DD ; HOMEMOUSE offset
|
|
0019 BC ; INITMOUSE offset
|
|
|
|
; Startup
|
|
0020 08 PHP ; P -> Stack
|
|
0021 78 SEI
|
|
0022 8D F8 07 STA $07F8 ; $07F8 enthält den aktuellen Slot $Cn
|
|
0025 48 PHA ; A -> Stack
|
|
0026 98 TYA ; Y -> A
|
|
0027 48 PHA
|
|
0028 8A TXA ; X -> A
|
|
0029 48 PHA
|
|
002A 20 58 FF JSR $FF58 ; RTS
|
|
002D BA TSX
|
|
002E BD 00 01 LDA $0100,X
|
|
0031 AA TAX ; X = $n0
|
|
0032 08 PHP
|
|
0033 0A ASL A
|
|
0034 0A ASL A
|
|
0035 0A ASL A
|
|
0036 0A ASL A
|
|
0037 28 PLP
|
|
0038 A8 TAY ; Y = $0n
|
|
0039 AD F8 07 LDA $07F8
|
|
003C 8E F8 07 STX $07F8 ; X = $Cn
|
|
003F 48 PHA
|
|
0040 A9 08 LDA #$08
|
|
0042 70 67 BVS $00AB
|
|
0044 90 4D BCC $0093
|
|
0046 B0 55 BCS $009D
|
|
0048 29 01 AND #$01
|
|
004A 09 F0 ORA #$F0
|
|
004C 9D 38 06 STA $0638,X
|
|
004F A9 02 LDA #$02
|
|
0051 D0 40 BNE $0093
|
|
0053 29 0F AND #$0F
|
|
0055 09 90 ORA #$90
|
|
0057 D0 35 BNE $008E
|
|
0059 FF ???
|
|
005A FF ???
|
|
005B B9 83 C0 LDA $C083,Y
|
|
005E 29 FB AND #$FB
|
|
0060 99 83 C0 STA $C083,Y
|
|
0063 A9 3E LDA #$3E
|
|
0065 99 82 C0 STA $C082,Y
|
|
0068 B9 83 C0 LDA $C083,Y
|
|
006B 09 04 ORA #$04
|
|
006D 99 83 C0 STA $C083,Y
|
|
0070 B9 82 C0 LDA $C082,Y
|
|
0073 29 C1 AND #$C1
|
|
0075 1D B8 05 ORA $05B8,X
|
|
0078 99 82 C0 STA $C082,Y
|
|
007B 68 PLA
|
|
007C F0 0A BEQ $0088
|
|
007E 6A ROR A
|
|
007F 90 75 BCC $00F6
|
|
0081 68 PLA
|
|
0082 AA TAX
|
|
0083 68 PLA
|
|
0084 A8 TAY
|
|
0085 68 PLA
|
|
0086 28 PLP
|
|
0087 60 RTS
|
|
0088 18 CLC
|
|
0089 60 RTS
|
|
|
|
; CLAMPMOUSE
|
|
008A 29 01 AND #$01
|
|
008C 09 60 ORA #$60
|
|
008E 9D 38 06 STA $0638,X
|
|
0091 A9 0E LDA #$0E
|
|
0093 9D B8 05 STA $05B8,X
|
|
0096 A9 01 LDA #$01
|
|
0098 48 PHA
|
|
0099 D0 C0 BNE $005B
|
|
|
|
; READMOUSE
|
|
009B A9 0C LDA #$0C
|
|
009D 9D B8 05 STA $05B8,X
|
|
00A0 A9 02 LDA #$02
|
|
00A2 D0 F4 BNE $0098
|
|
|
|
; CLEARMOUSE
|
|
00A4 A9 30 LDA #$30
|
|
00A6 9D 38 06 STA $0638,X
|
|
00A9 A9 06 LDA #$06
|
|
00AB 9D B8 05 STA $05B8,X
|
|
00AE A9 00 LDA #$00
|
|
00B0 48 PHA
|
|
00B1 F0 A8 BEQ $005B
|
|
|
|
; SETMOUSE
|
|
00B3 C9 10 CMP #$10
|
|
00B5 B0 D2 BCS $0089
|
|
00B7 9D 38 07 STA $0738,X
|
|
00BA 90 EA BCC $00A6
|
|
|
|
; INITMOUSE
|
|
00BC A9 04 LDA #$04
|
|
00BE D0 EB BNE $00AB
|
|
|
|
; POSMOUSE
|
|
00C0 A9 40 LDA #$40
|
|
00C2 D0 CA BNE $008E
|
|
|
|
; SERVEMOUSE
|
|
00C4 A4 06 LDY $06
|
|
00C6 A9 60 LDA #$60
|
|
00C8 85 06 STA $06
|
|
00CA 20 06 00 JSR $0006
|
|
00CD 84 06 STY $06
|
|
00CF BA TSX
|
|
00D0 BD 00 01 LDA $0100,X
|
|
00D3 AA TAX
|
|
00D4 0A ASL A
|
|
00D5 0A ASL A
|
|
00D6 0A ASL A
|
|
00D7 0A ASL A
|
|
00D8 A8 TAY
|
|
00D9 A9 20 LDA #$20
|
|
00DB D0 C9 BNE $00A6
|
|
|
|
; HOMEMOUSE
|
|
00DD A9 70 LDA #$70
|
|
00DF D0 C5 BNE $00A6
|
|
00E1 48 PHA
|
|
00E2 A9 A0 LDA #$A0
|
|
00E4 D0 A8 BNE $008E
|
|
00E6 29 0F AND #$0F
|
|
00E8 09 B0 ORA #$B0
|
|
00EA D0 BA BNE $00A6
|
|
00EC A9 C0 LDA #$C0
|
|
00EE D0 B6 BNE $00A6
|
|
00F0 A9 02 LDA #$02
|
|
00F2 D0 B7 BNE $00AB
|
|
00F4 A2 03 LDX #$03
|
|
00F6 38 SEC
|
|
00F7 60 RTS
|
|
|
|
00FB D6 ; Signature byte
|
|
|
|
|
|
|
|
|
|
|
|
C800 2C 58 FF BIT $FF58 ; set overflow, clear carry
|
|
C803 70 1B BVS $0020 ; jump to $20
|
|
C805 38 SEC ; Signature byte?
|
|
C806 90 18 BCC $0020
|
|
C808 B8 CLV ; Signature byte?
|
|
C809 50 15 BVC $0020
|
|
C80B 01 ; Signature byte
|
|
C80C 20 ; device signature XY-Input device
|
|
C80D F4 ???
|
|
C80E F4 ???
|
|
C80F F4 ???
|
|
C810 F4 ???
|
|
C811 00 BRK
|
|
C812 B3 ; SETMOUSE offset
|
|
C813 C4 ; SERVEMOUSE offset
|
|
C814 9B ; READMOUSE offset
|
|
C815 A4 ; CLEARMOUSE offset
|
|
C816 C0 ; POSMOUSE offset
|
|
C817 8A ; CLAMPMOUSE offset
|
|
C818 DD ; HOMEMOUSE offset
|
|
C819 BC ; INITMOUSE offset
|
|
|
|
; Startup
|
|
C820 08 PHP
|
|
C821 78 SEI
|
|
C822 8D F8 07 STA $07F8
|
|
C825 48 PHA
|
|
C826 98 TYA
|
|
C827 48 PHA
|
|
C828 8A TXA
|
|
C829 48 PHA
|
|
C82A 20 58 FF JSR $FF58
|
|
C82D BA TSX
|
|
C82E BD 00 01 LDA $0100,X
|
|
C831 AA TAX
|
|
C832 08 PHP
|
|
C833 0A ASL A
|
|
C834 0A ASL A
|
|
C835 0A ASL A
|
|
C836 0A ASL A
|
|
C837 28 PLP
|
|
C838 A8 TAY
|
|
C839 AD F8 07 LDA $07F8
|
|
C83C 8E F8 07 STX $07F8
|
|
C83F 48 PHA
|
|
C840 A9 08 LDA #$08
|
|
C842 70 67 BVS $C8AB
|
|
C844 90 4D BCC $C893
|
|
C846 B0 55 BCS $C89D
|
|
C848 29 01 AND #$01
|
|
C84A 09 F0 ORA #$F0
|
|
C84C 9D 38 06 STA $0638,X
|
|
C84F A9 02 LDA #$02
|
|
C851 D0 40 BNE $C893
|
|
C853 29 0F AND #$0F
|
|
C855 09 90 ORA #$90
|
|
C857 D0 35 BNE $C88E
|
|
C859 FF ???
|
|
C85A FF ???
|
|
C85B B9 83 C0 LDA $C083,Y
|
|
C85E 29 FB AND #$FB
|
|
C860 99 83 C0 STA $C083,Y
|
|
C863 A9 3E LDA #$3E
|
|
C865 99 82 C0 STA $C082,Y
|
|
C868 B9 83 C0 LDA $C083,Y
|
|
C86B 09 04 ORA #$04
|
|
C86D 99 83 C0 STA $C083,Y
|
|
C870 B9 82 C0 LDA $C082,Y
|
|
C873 29 C1 AND #$C1
|
|
C875 1D B8 05 ORA $05B8,X
|
|
C878 99 82 C0 STA $C082,Y
|
|
C87B 68 PLA
|
|
C87C F0 0A BEQ $C888
|
|
C87E 6A ROR A
|
|
C87F 90 75 BCC $C8F6
|
|
C881 68 PLA
|
|
C882 AA TAX
|
|
C883 68 PLA
|
|
C884 A8 TAY
|
|
C885 68 PLA
|
|
C886 28 PLP
|
|
C887 60 RTS
|
|
C888 18 CLC
|
|
C889 60 RTS
|
|
|
|
; CLAMPMOUSE
|
|
C88A 29 01 AND #$01
|
|
C88C 09 60 ORA #$60
|
|
C88E 9D 38 06 STA $0638,X
|
|
C891 A9 0E LDA #$0E
|
|
C893 9D B8 05 STA $05B8,X
|
|
C896 A9 01 LDA #$01
|
|
C898 48 PHA
|
|
C899 D0 C0 BNE $C85B
|
|
; READMOUSE
|
|
C89B A9 0C LDA #$0C
|
|
C89D 9D B8 05 STA $05B8,X
|
|
C8A0 A9 02 LDA #$02
|
|
C8A2 D0 F4 BNE $C898
|
|
; CLEARMOUSE
|
|
C8A4 A9 30 LDA #$30
|
|
C8A6 9D 38 06 STA $0638,X
|
|
C8A9 A9 06 LDA #$06
|
|
C8AB 9D B8 05 STA $05B8,X
|
|
C8AE A9 00 LDA #$00
|
|
C8B0 48 PHA
|
|
C8B1 F0 A8 BEQ $C85B
|
|
; SETMOUSE
|
|
C8B3 C9 10 CMP #$10
|
|
C8B5 B0 D2 BCS $C889
|
|
C8B7 9D 38 07 STA $0738,X
|
|
C8BA 90 EA BCC $C8A6
|
|
; INITMOUSE
|
|
C8BC A9 04 LDA #$04
|
|
C8BE D0 EB BNE $C8AB
|
|
; POSMOUSE
|
|
C8C0 A9 40 LDA #$40
|
|
C8C2 D0 CA BNE $C88E
|
|
; SERVEMOUSE
|
|
C8C4 A4 06 LDY $06
|
|
C8C6 A9 60 LDA #$60
|
|
C8C8 85 06 STA $06
|
|
C8CA 20 06 00 JSR $0006
|
|
C8CD 84 06 STY $06
|
|
C8CF BA TSX
|
|
C8D0 BD 00 01 LDA $0100,X
|
|
C8D3 AA TAX
|
|
C8D4 0A ASL A
|
|
C8D5 0A ASL A
|
|
C8D6 0A ASL A
|
|
C8D7 0A ASL A
|
|
C8D8 A8 TAY
|
|
C8D9 A9 20 LDA #$20
|
|
C8DB D0 C9 BNE $C8A6
|
|
; HOMEMOUSE
|
|
C8DD A9 70 LDA #$70
|
|
C8DF D0 C5 BNE $C8A6
|
|
C8E1 48 PHA
|
|
C8E2 A9 A0 LDA #$A0
|
|
C8E4 D0 A8 BNE $C88E
|
|
C8E6 29 0F AND #$0F
|
|
C8E8 09 B0 ORA #$B0
|
|
C8EA D0 BA BNE $C8A6
|
|
C8EC A9 C0 LDA #$C0
|
|
C8EE D0 B6 BNE $C8A6
|
|
C8F0 A9 02 LDA #$02
|
|
C8F2 D0 B7 BNE $C8AB
|
|
C8F4 A2 03 LDX #$03
|
|
C8F6 38 SEC
|
|
C8F7 60 RTS
|
|
C8F8 FF ???
|
|
C8F9 FF ???
|
|
C8FA FF ???
|
|
C8FB D6 FF DEC $FF,X
|
|
C8FD FF ???
|
|
C8FE FF ???
|
|
C8FF 01 98 ORA ($98,X)
|