home *** CD-ROM | disk | FTP | other *** search
- * $Id: lowlevel.s 1.1 1999/02/03 04:08:28 jotd Exp $
-
- ; most of this stuff was ripped from the real lowlevel library
-
- TEST_JOY_BUTTON:MACRO
- bclr #JPB_BUTTON_\1,D0 ; button released
- move.l (A0)+,D1
- tst.w D1
- beq.b .rts_\1
- bset #JPB_BUTTON_\1,D0 ; button pressed
- .rts_\1
- ENDM
-
- **************************************************************************
- * LOWLEVEL-LIBRARY *
- **************************************************************************
- **************************************************************************
- * INITIALIZATION *
- **************************************************************************
-
- LOWLINIT move.l _lowlbase,d0
- beq .init
- rts
-
- .init move.l #162,d0 ; reserved function
- move.l #250,d1
- lea _lowlname,a0
- bsr _InitLibrary
- move.l d0,a0
- move.l d0,_lowlbase
-
- patch _LVOReadJoyPort(a0),_ReadJoyPort
- patch _LVOSetJoyPortAttrsA(a0),SETJOYPORTATTRS
- patch _LVOAddVBlankInt(a0),ADDVBLANKINT
- patch _LVOAddKBInt(a0),ADDKBINT
- patch _LVOAddTimerInt(a0),ADDTIMERINT
- patch _LVORemTimerInt(a0),REMTIMERINT
- patch _LVOStartTimerInt(a0),STARTTIMERINT
- patch _LVOStopTimerInt(a0),STOPTIMERINT
- patch _LVORemVBlankInt(a0),MYRTS
- patch _LVORemKBInt(a0),MYRTS
- patch _LVOQueryKeys(a0),QueryKeys
- patch _LVOSystemControlA(a0),MYRTZ
- patch _LVOGetLanguageSelection(a0),GETLANGSEL
- patch _LVOGetKey(a0),GETKEY
- patch _LVOElapsedTime(a0),ELAPSEDTIME
-
- movem.l D0-A6,-(A7)
- move.l D0,A5
- CLR.L 242(A5) ; i don't remember why I did that
- move.l #$ad303,44(A5) ; EClock rate for timer
-
- lea.l JOYPAD1KEYS(PC),a0 ;copy joypad keys to
- lea.l OSM_JOYPAD1KEYS,a1 ;location in lowlevel.lib
- moveq.l #6*2-1,d0
- tst.b (A0)+
- .copykeys move.b (A1)+,(A0)+
- addq.l #3,a0
- dbf d0,.copykeys
-
- ; opens keyboard device
-
- lea _kbdevname(pc),A0
- moveq.l #0,D0
- moveq.l #0,D1
-
- lea -64(A7),A7
- move.l A7,A1
- move.l $4.W,A6
- JSRLIB OpenDevice
- move.l 20(A7),68(A5) ; device base
- lea 64(A7),A7
-
-
- ; opens timer device
-
- lea _timerdevname(pc),A0
- moveq.l #0,D0
- moveq.l #0,D1
-
- lea -64(A7),A7
- move.l A7,A1
- move.l $4.W,A6
- JSRLIB OpenDevice
- move.l 20(A7),64(A5) ; device base
- lea 64(A7),A7
-
- movem.l (A7)+,D0-A6
- rts
-
- GETLANGSEL:
- moveq.l #2,D0 ; british english
- rts
-
- ; adds a vblank interrupt
- ; < A0: intRoutine
- ; < A1: intData
-
- ADDVBLANKINT:
- movem.l D2-D7/A2-A6,-(A7)
- lea .int_entry(pc),A3
- move.l A0,(A3)
- lea .caller_int(pc),A0
-
- lea .int_struct(pc),A3
- move.b #NT_INTERRUPT,8(A3) ; ln_Type = INTERRUPT
- move.b #0,9(A3) ; Highest priority
- move.l .vbname,10(A3) ; The name of the server (for monitor programs)
- move.l A0,18(A3) ; The new interrupt server code to chain with
- move.l A1,14(A3) ; The data to pass in A1 at each call
- move.l #INTB_VERTB,D0 ; Vertical Blank interrupt
- move.l $4.W,A6
- move.l A3,A1 ; pointer on interrupt structure
- JSR _LVOAddIntServer(A6) ; Adds the handler to the existing chain
-
- movem.l (A7)+,D2-D7/A2-A6
-
- moveq.l #1,D0 ; returns !=0 because success
- rts
-
- .caller_int:
- move.l .int_entry(pc),A5 ; as required in lowlevel autodoc
- jmp (A5)
-
- .int_entry:
- dc.l 0
- .int_struct:
- ds.b 22
- .vbname:
- dc.b "lowlevel vbl",0
- cnop 0,4
-
- ; adds a keyboard interrupt
- ; < A0: intRoutine
- ; < A1: intData
-
- ADDKBINT:
- movem.l D2-D7/A2-A6,-(A7)
- lea .int_entry(pc),A3
- move.l A0,(A3)
- lea .caller_int(pc),A0
-
- lea .int_struct(pc),A3
- move.b #NT_INTERRUPT,8(A3) ; ln_Type = INTERRUPT
- move.b #0,9(A3) ; Highest priority
- move.l .vbname,10(A3) ; The name of the server (for monitor programs)
- move.l A0,18(A3) ; The new interrupt server code to chain with
- move.l A1,14(A3) ; The data to pass in A1 at each call
- move.l #INTB_PORTS,D0 ; Ports interrupt
- move.l $4.W,A6
- move.l A3,A1 ; pointer on interrupt structure
- JSR _LVOAddIntServer(A6) ; Adds the handler to the existing chain
-
- movem.l (A7)+,D2-D7/A2-A6
- moveq.l #1,D0 ; returns !=0 because success
- rts
-
- .caller_int:
- move.l .int_entry(pc),A5 ; as required in lowlevel autodoc
-
- ; move.b $BFEC01,D0
- ; not.b D0
- ; ror.b #1,D0 ; raw keycode
-
- move.b KBDQUALIFIER+1,D0
- cmp.b .lastkey(pc),D0
- beq.b .ports_end ; same key: impossible, since the key needs
- move.b D0,.lastkey ; to be released. We don't call the user routine
-
- ; acknowledge keyboard
-
- ; bsr AckKeyboard
-
- .out
- ; jumps to user routine
-
- jmp (A5)
- .ports_end
- ; does not call user routine
-
- rts
-
- .int_entry:
- dc.l 0
- .int_struct:
- ds.b 22
- .vbname:
- dc.b "lowlevel kb",0
- .lastkey:
- dc.b 0
- cnop 0,4
-
- ; adds a timer interrupt
- ; < A0: intRoutine
- ; < A1: intData
-
- ADDTIMERINT:
-
- MOVEM.L A0-A1/A4-A6,-(A7) ;08C4: 48E700CE
- MOVEA.L A6,A5 ;08C8: 2A4E
- MOVEA.L $4.W,A6 ;08CA: 2C6E0034
- JSR _LVOForbid(A6) ;(exec.library)
- TST.L 242(A5) ;08D2: 4AAD00F2
- BEQ.S LOWL_0061 ;08D6: 670C
- JSR _LVOPermit(A6) ;(exec.library)
- MOVEM.L (A7)+,A0-A1/A4-A6 ;08DC: 4CDF7300
- MOVEQ #0,D0 ;08E0: 7000
- RTS ;08E2: 4E75
- LOWL_0061:
- MOVEM.L (A7)+,A0-A1 ;08E4: 4CDF0300
- LEA 224(A5),A4 ;08E8: 49ED00E0
- MOVE.L A0,18(A4) ;08EC: 29480012
- MOVE.L A1,14(A4) ;08F0: 2949000E
- CLR.B 9(A4) ;08F4: 422C0009
- MOVE.B #$02,8(A4) ;08F8: 197C00020008
- MOVE.L 10(A5),10(A4) ;08FE: 296D000A000A
- JSR _LVOPermit(A6) ;(exec.library)
- JSR _LVODisable(A6) ;(exec.library)
- LEA _ciaaname,A1 ;090C: 43FA01F2
- JSR LOWL_0071 ;0910: 4EB900000A3C
- BPL.S LOWL_0062 ;0916: 6A1C
- MOVEA.L $4.W,A6 ;0918: 2C6D0034
- LEA _ciabname,A1 ;091C: 43FA01F0
- JSR LOWL_0071 ;0920: 4EB900000A3C
- BPL.S LOWL_0062 ;0926: 6A0C
- MOVEQ #0,D0 ;0928: 7000
- MOVE.L D0,18(A4) ;092A: 29400012
- MOVEA.L $4.W,A6 ;092E: 2C6D0034
- BRA.S LOWL_0065 ;0932: 603C
- LOWL_0062:
- MOVE.L A6,24(A4) ;0934: 294E0018
- MOVE D0,22(A4) ;0938: 39400016
- BNE.S LOWL_0063 ;093C: 6612
- MOVEQ #14,D1 ;093E: 720E
- ROL.L #8,D1 ;0940: E199
- MOVE.L #$000100CE,D0 ;0942: 203C000100CE
- MOVEA.L 34(A6),A1 ; cia base from cia-resource
- BRA.S LOWL_0064 ;094E: 6010
- LOWL_0063:
- MOVEQ #15,D1 ;0950: 720F
- ROL.L #8,D1 ;0952: E199
- MOVE.L #$0002008E,D0 ;0954: 203C0002008E
- move.l 34(A6),a1 ;cia-base from cia.resource
- LOWL_0064:
- AND.B D0,0(A1,D1) ;0960: C1311000
- SWAP D0 ;0964: 4840
- JSR -24(A6) ; SetICR
- MOVEA.L $4.W,A6 ;096A: 2C6D0034
- MOVE.L A4,D0 ;096E: 200C
- LOWL_0065:
- JSR _LVOEnable(A6) ;(exec.library)
- MOVEM.L (A7)+,A4-A6 ;0974: 4CDF7000
- RTS ;0978: 4E75
-
- LOWL_0071:
- JSRLIB OpenResource
- MOVEA.L D0,A6 ;0A40: 2C40
- MOVEA.L A4,A1 ;0A42: 224C
- MOVE #$0000,D0 ;0A44: 303C0000
- MOVE D0,-(A7) ;0A48: 3F00
- JSRLIB AddICRVector ; (cia.resource)
- TST.L D0 ;0A4E: 4A80
- BEQ.S LOWL_0072 ;0A50: 6714
- MOVEA.L A4,A1 ;0A52: 224C
- MOVE #$0001,D0 ;0A54: 303C0001
- MOVE D0,(A7) ;0A58: 3E80
- JSRLIB AddICRVector ; (cia.resource)
- TST.L D0 ;0A5E: 4A80
- BEQ.S LOWL_0072 ;0A60: 6704
- MOVE #$FFFF,(A7) ;0A62: 3EBCFFFF
- LOWL_0072:
- MOVE (A7)+,D0 ;0A66: 301F
- RTS ;0A68: 4E75
-
- REMTIMERINT:
- MOVE.L A6,-(A7) ;0A18: 2F0E
- MOVE.L A1,-(A7) ;0A1A: 2F09
- BEQ.S .rti_0070 ;0A1C: 6718
- MOVE 22(A1),D0 ;0A1E: 30290016
- MOVEA.L 24(A1),A6 ;0A22: 2C690018
- JSR _LVORemICRVector(A6); (cia.resource)
- MOVEM.L (A7)+,A1 ;0A2A: 4CDF0200
- CLR.L 18(A1) ;0A2E: 42A90012
- MOVEA.L (a7)+,a6 ;0A32: 2C5F
- RTS ;0A34: 4E75
- .rti_0070:
- MOVEM.L (A7)+,A1/A6 ;0A36: 4CDF4200
- RTS ;0A3A: 4E75
-
- STARTTIMERINT:
- MOVEM.L D1-D3,-(A7) ;09A4: 48E77000
- TST.W 22(A1) ;timer a or b?
- BNE.S .lab_006A ;09AC: 6618
- MOVEQ #14,D2 ;09AE: 740E
- ROL.L #8,D2 ;09B0: E19A
- MOVE.L #$000100C6,D3 ;09B8: 263C000100C6
- MOVEA.L 24(A1),a0
- move.l 34(A0),a0 ;get cia-baseaddress from resource instead
- MOVEA.L #$00000400,A1 ;09B2: 227C00000400
- BRA.S .lab_006B ;09C4: 6016
- .lab_006A:
- MOVEQ #15,D2 ;09C6: 740F
- ROL.L #8,D2 ;09C8: E19A
- MOVE.L #$00010086,D3 ;09D0: 263C00010086
- MOVEA.L 24(A1),a0 ;#$00BFD000,A0 ;09D6: 207C00BFD000
- move.l 34(A0),a0
- MOVEA.L #$00000600,A1 ;09CA: 227C00000600
- .lab_006B:
- AND.B D3,0(A0,D2) ;09DC: C7302000
- TST D1 ;09E0: 4A41
- BNE.S .lab_006C ;09E2: 6606
- ORI.B #$08,0(A0,D2) ;09E4: 003000082000
- .lab_006C:
- MOVE.L 44(A6),D1 ;09EA: 222E002C
- LSR.L #1,D0 ;09EE: E288
- LSR.L #4,D1 ;09F0: E889
- MULU D1,D0 ;09F2: C0C1
- DIVU #$7A12,D0 ;09F4: 80FC7A12
- BNE.S .lab_006D ;09F8: 6602
- ADDQ.B #1,D0 ;09FA: 5200
- .lab_006D:
- ADDA.L A0,A1 ;09FC: D3C8
- MOVE.B D0,(A1) ;09FE: 1280
- LSR #8,D0 ;0A00: E048
- MOVE.B D0,256(A1) ;0A02: 13400100
- TST 2(A7) ;0A06: 4A6F0002
- BEQ.S .lab_006E ;0A0A: 6706
- SWAP D3 ;0A0C: 4843
- OR.B D3,0(A0,D2) ;0A0E: 87302000
- .lab_006E:
- MOVEM.L (A7)+,D1-D3 ;0A12: 4CDF000E
- RTS ;0A16: 4E75
-
-
- STOPTIMERINT:
- TST.W 22(A1) ;097A: 4A690016
- BNE.S .lab_0067 ;097E: 6610
- MOVEQ #14,D1 ;0980: 720E
- ROL.L #8,D1 ;0982: E199
- MOVE #$00CE,D0 ;0984: 303C00CE
- move.l 24(A1),a1 ; cia base address
- move.l 34(A1),a1
- BRA.S .lab_0068 ;098E: 600E
- .lab_0067:
- MOVEQ #15,D1 ;0990: 720F
- ROL.L #8,D1 ;0992: E199
- MOVE #$008E,D0 ;0994: 303C008E
- move.l 24(A1),a1
- move.l 34(A1),a1
- .lab_0068:
- AND.B D0,0(A1,D1) ;099E: C1311000
- RTS ;09A2: 4E75
-
-
-
- ; forces a port to a controller type and allows to reset it
-
- SETJOYPORTATTRS:
- moveq.l #-1,D0 ; all went OK
- rts
-
- ; reads joypads/mouses/...
-
- _ReadJoyPort:
- cmp.w #0,D0
- beq .joy0
- cmp.w #1,D0
- beq .joy1
-
- move.l #JP_TYPE_NOTAVAIL,D0 ; neither port 0 or 1 !
- bra.w .rjexit
- .joy0
- moveq.l #0,D0
- move.b OSM_PORTS_CONFIG,D0 ; type of controller connected (see osemu.asm)
-
- btst #6,$bfe001
- bne .nob1_0
-
- bset #JPB_BUTTON_RED,D0 ; fire/lmb
- .nob1_0:
- move.w potinp_value(pc),D1
- btst #10,D1
- bne.b .nob2_0
-
- bset #JPB_BUTTON_BLUE,D0 ; fire 2/rmb
- .nob2_0
-
- ; joystick moves
-
- move.l A6,-(A7)
- lea (joy0dat+_custom),A6
- bsr .joy_test
- move.l (A7)+,A6
- bra.b .rjexit
-
- .joy1
- moveq.l #0,D0
- move.b OSM_PORTS_CONFIG+1,D0 ; type of controller connected (see osemu.asm)
-
- btst #7,$bfe001
- bne .nob1_1
-
- bset #JPB_BUTTON_RED,D0 ; fire/lmb
-
- .nob1_1:
-
- move.w potinp_value(pc),D1
- btst #14,D1
- bne.b .nob2_1
-
- bset #JPB_BUTTON_BLUE,D0 ; fire 2/rmb
- .nob2_1:
-
- ; joystick moves
-
- move.l A6,-(A7)
- lea (joy1dat+_custom),A6
- bsr .joy_test
- move.l (A7)+,A6
-
- move.l D0,-(A7)
- movem.l D1/D2,-(A7)
- move.l .old_buttonmask(pc),D0
- bsr .button_test
- movem.l (A7)+,D1/D2
- move.l D0,.old_buttonmask
- or.l (A7),D0
- move.l D0,(A7)
- move.l (A7)+,D0
- .rjexit
- rts
-
-
- ; other joypad buttons by keyboard emulation
- ; even a real joypad does not work properly on a real amiga!
- ; (I don't really know why!)
-
- .button_test0
- lea JOYPAD0KEYS(pc),A0
- moveq.l #6,D1
-
- movem.l D0,-(A7)
- bsr QueryKeys
- movem.l (A7)+,D0
-
- lea JOYPAD0KEYS(pc),A0
- bra.s .allbutton_test
-
- .button_test:
- lea .query_array(pc),A0
- moveq.l #6,D1
-
- movem.l D0,-(A7)
- bsr QueryKeys
- movem.l (A7)+,D0
-
- lea .query_array(pc),A0
- .allbutton_test:
- TEST_JOY_BUTTON BLUE ; F5: fire 2/blue/rmb
- TEST_JOY_BUTTON GREEN ; F6: Green
- TEST_JOY_BUTTON YELLOW ; F7: Yellow
- TEST_JOY_BUTTON PLAY ; F8: Play/pause
- TEST_JOY_BUTTON REVERSE ; F9: left ear
- TEST_JOY_BUTTON FORWARD ; F10:right ear
- rts
-
- ; tests joystick moves
- ; < A6: custom reg. of the selected joystick
- ; > D0: joystick bits set
-
- .joy_test:
- movem.l D4-D6,-(A7)
-
- move.w (A6),D4
- move.w D4,D5
- btst #1,D4
- beq.b .left_off
- bset #JPB_JOY_RIGHT,D0
- bra.b .vert_test
- .left_off:
- btst #9,D4
- beq.b .vert_test
- bset #JPB_JOY_LEFT,D0
- .vert_test
- lsr.w #1,D4
- eor.w D5,D4
- btst #0,D4
- beq.b .back_off
- bset #JPB_JOY_DOWN,D0
- bra.b .exit
- .back_off
- btst #8,D4
- beq.b .exit
- bset #JPB_JOY_UP,D0
- .exit
-
- movem.l (A7)+,D4-D6
- rts
-
- .old_buttonmask:
- dc.l 0
- .old_buttonmask0:
- dc.l 0
-
- .query_array:
- JOYPAD1KEYS:
- dc.w $54,0
- dc.w $55,0
- dc.w $56,0
- dc.w $57,0
- dc.w $58,0
- dc.w $59,0
- JOYPAD0KEYS:
- dc.w $5,0
- dc.w $6,0
- dc.w $7,0
- dc.w $8,0
- dc.w $9,0
- dc.w $A,0
-
- ; A0: queryArray
- ; D1: array size
-
- QueryKeys:
- MOVEM.L D2/A2/A5-A6,-(A7) ;1584: 48E72026
- MOVEA.L A6,A5 ;1588: 2A4E
- MOVE.B D1,D2 ;158A: 1401
- MOVEA.L A0,A2 ;158C: 2448
- MOVEA.L $4.W,A6
- SUBA.L A1,A1 ;1592: 93C9
- JSRLIB FindTask ;(exec.library)
-
- ;;; MOVEA.L 84(A5),A0 ;1598: keyboard.device base
- ;;; MOVE.L D0,16(A0) ;159C: 21400010
- ;;; MOVE.B #$04,15(A0) ;15A0: 117C0004000F
- ;;; MOVE.B #$00,14(A0) ;15A6: 117C0000000E
-
- LEA -64(A7),A7 ;15AC: 4FEFFFC0
-
- ;;; MOVE.L A0,14(A7) ;15B0: 2F48000E
-
- MOVEA.L A7,A1 ;15B4: 224F
- MOVE.L 68(A5),20(A1) ;15B6: 236D00440014
- MOVE #$000A,28(A1) ;15BC: 337C000A001C
- LEA 48(A7),A0 ;15C2: 41EF0030
- MOVE.L A0,40(A1) ;15C6: 23480028
- MOVE.L #$00000010,36(A1) ;15CA: 237C000000100024
- JSR _LVODoIO(A6) ;(exec.library)
- TST.B D0 ;15D6: 4A00
- BNE.S .qk_00E2 ;15D8: 661E
- .qk_00DE:
- MOVE (A2)+,D1 ;15DA: 321A
- MOVE D1,D0 ;15DC: 3001
- AND #$0007,D0 ;15DE: C07C0007
- LSR #3,D1 ;15E2: E649
- BTST D0,48(A7,D1) ;15E4: 01371030
- BEQ.S .qk_00DF ;15E8: 6706
- MOVE #$FFFF,(A2)+ ;15EA: 34FCFFFF
- BRA.S .qk_00E0 ;15EE: 6004
- .qk_00DF:
- MOVE #$0000,(A2)+ ;15F0: 34FC0000
- .qk_00E0:
- SUBQ.B #1,D2 ;15F4: 5302
- .qk_00E1:
- BNE.S .qk_00DE ;15F6: 66E2
- .qk_00E2:
- ;;; MOVEA.L 14(A7),A0 ;15F8: 206F000E
- LEA 64(A7),A7 ;15FC: 4FEF0040
- ;;; MOVE.B #$02,14(A0) ;1600: 117C0002000E
- MOVEM.L (A7)+,D2/A2/A5-A6 ;1606: 4CDF6404
- RTS ;160A: 4E75
-
- ; gets rawkey+qualifier
- GETKEY:
- move.w KBDQUALIFIER,D0
- tst.b D0
- beq.b .nok
- rts
- .nok
- st.b D0
- rts
-
- ELAPSEDTIME:
- MOVEM.L D2-D3/A6,-(A7) ;0A6A: 48E73002
- MOVE.L 4(A0),-(A7) ; old values
- MOVE.L (A0),-(A7)
- MOVEA.L 64(A6),A6 ; timer base
- JSRLIB ReadEClock
- MOVEM.L (A0)+,D1-D2 ;0A7C: 4CD80006
- SUB.L 4(A7),D2 ;0A80: 94AF0004
- MOVE.L (A7)+,D3 ;0A84: 261F
- ADDQ #4,A7 ;0A86: 584F
- SUBX.L D3,D1 ;0A88: 9383
- BPL.S LAB_0074 ;0A8A: 6A04
- NEG.L D2 ;0A8C: 4482
- NEGX.L D1 ;0A8E: 4081
- LAB_0074:
- SWAP D1 ;0A90: 4841
- TST D1 ;0A92: 4A41
- BNE.S LAB_0076 ;0A94: 6614
- SWAP D2 ;0A96: 4842
- MOVE D2,D1 ;0A98: 3202
- CLR D2 ;0A9A: 4242
- IFND HARRY
- MC68020 ; lowlevel should need 68020+AGA so noproblemo with this
- ENDC
- DIVU.L D0,D1:D2 ;0A9C: 4C402401
- IFND HARRY
- MC68000
- ENDC
- BVS.S LAB_0076 ;0AA0: 6908
- MOVE.L D2,D0 ;0AA2: 2002
- LAB_0075:
- MOVEM.L (A7)+,D2-D3/A6 ;0AA4: 4CDF400C
- RTS ;0AA8: 4E75
- LAB_0076:
- MOVEQ #-1,D0 ;0AAA: 70FF
- BRA.S LAB_0075 ;0AAC: 60F6
-
-
- ; unused ATM
-
- IFD KKKKKKK
- LOWL_00D7:
- MOVEM.L D2/A4-A6,-(A7) ;16A8: 48E7200E
- MOVEA.L A1,A4 ;16AC: 2849
- MOVEQ #0,D2 ;16AE: 7400
- MOVE.B $BFEC01,D2 ;16B0: 143900BFEC01
- NOT.B D2 ;16B6: 4602
- ROR.B #1,D2 ;16B8: E21A
- MOVEA.L (72,A4),A0 ;16BA: 206C0048
- MOVEA.L (14,A0),A1 ;16BE: 2268000E
- MOVEA.L (18,A0),A5 ;16C2: 2A680012
- JSR (A5) ;16C6: 4E95
- CMP #$0078,D2 ;16C8: B47C0078
- BEQ.S LOWL_00DD ;16CC: 6760
- MOVE D2,D1 ;16CE: 3202
- AND #$0078,D1 ;16D0: C27C0078
- CMP #$0060,D1 ;16D4: B27C0060
- BNE.S LOWL_00D8 ;16D8: 6612
- MOVE (40,A4),D0 ;16DA: 302C0028
- MOVE D2,D1 ;16DE: 3202
- AND #$0007,D1 ;16E0: C27C0007
- BCHG D1,D0 ;16E4: 0340
- MOVE D0,(40,A4) ;16E6: 39400028
- BRA.S LOWL_00DA ;16EA: 601E
- LOWL_00D8:
- BTST #7,D2 ;16EC: 08020007
- BNE.S LOWL_00D9 ;16F0: 6606
- MOVE D2,(42,A4) ;16F2: 3942002A
- BRA.S LOWL_00DA ;16F6: 6012
- LOWL_00D9:
- MOVE D2,D1 ;16F8: 3202
- BCLR #7,D1 ;16FA: 08810007
- CMP (42,A4),D1 ;16FE: B26C002A
- BNE.S LOWL_00DA ;1702: 6606
- ORI #$00FF,(42,A4) ;1704: 006C00FF002A
- LOWL_00DA:
- MOVE D2,D0 ;170A: 3002
- SUBI #$00F9,D2 ;170C: 044200F9
- BPL.S LOWL_00DD ;1710: 6A1C
- MOVEA.L (252,A4),A1 ;1712: 226C00FC
- BRA.S LOWL_00DC ;1716: 600E
- LOWL_00DB:
- MOVEA.L (18,A1),A5 ;1718: 2A690012
- MOVEA.L (14,A1),A1 ;171C: 2269000E
- JSR (A5) ;1720: 4E95
- MOVEA.L (A7)+,A1 ;1722: 225F
- MOVE (A7)+,D0 ;1724: 301F
- LOWL_00DC:
- MOVE D0,-(A7) ;1726: 3F00
- MOVE.L (A1),-(A7) ;1728: 2F11
- BNE.S LOWL_00DB ;172A: 66EC
- ADDQ #6,A7 ;172C: 5C4F
- LOWL_00DD:
- MOVEM.L (A7)+,D2/A4-A6 ;172E: 4CDF7004
- RTS ;1732: 4E75
- MOVE.L (40,A6),D0 ;1734: 202E0028
- RTS ;1738: 4E75
- ENDC
-