AppleIIMouse/mouse rom.s

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)