;.PAGE 'Assembly language module for SetClock' ; Author: Willi Kusche ; P. O. Box 456 ; Bellmawr, NJ 08099 ; ; Macros ; XLIB MACRO XREF _LVO\1 ENDM JSRLIB MACRO JSR _LVO\1(A6) ENDM ; ; EXEC calls ; XLIB Forbid XLIB Permit ; ; DOS calls via Pascal stub ; XREF _Delay ; ; Entry point ; XDEF _WriteSClock XDEF _ReadSClock ;.PAGE 'Set the Spirit clock' ; ; ; _WriteSClock LINK A5,#0 MOVE.L #$00DC0FF0,A2 MOVEQ #0,D0 MOVEQ #1,D1 MOVE.B #$80,1(A2) MOVE.B D0,3(A2) MOVE.B D0,5(A2) MOVE.B #$80,7(A2) MOVE.B D1,9(A2) MOVE.B D1,11(A2) MOVE.B D1,13(A2) MOVE.B #$87,15(A2) MOVE.B #0,1(A2) PEA 104 JSR _Delay LEA 4(SP),SP MOVEQ #0,D0 MOVEQ #1,D1 MOVE.B #$80,1(A2) MOVE.B D0,3(A2) MOVE.B D0,5(A2) MOVE.B D0,7(A2) MOVE.B D1,9(A2) MOVE.B D1,11(A2) MOVE.B D1,13(A2) MOVE.B #$87,15(A2) MOVE.B #0,1(A2) JSRLIB Forbid OR.B #$80,$00DC0FF1 MOVE.L #$00DC0FF3,A3 MOVE.B 31(A5),(A3) ; Set seconds MOVE.B 27(A5),2(A3) ; Set minutes MOVE.B 23(A5),4(A3) ; Set hours MOVE.B 19(A5),8(A3) ; Set day MOVE.B 15(A5),10(A3) ; Set month MOVE.B 11(A5),12(A3) ; Set year AND.B #$7F,$00DC0FF1 MOVE.L 4,A6 JSRLIB Permit MOVEQ #0,D0 UNLK A5 RTS ;.PAGE 'Read the Spirit clock' ; ; ; _ReadSClock LINK A5,#0 MOVE.L 4,A6 JSRLIB Forbid SUBQ.L #8,SP MOVE.L #$00DC0FF1,A4 MOVE.B 12(A4),D0 CMP.B 12(A4),D0 BEQ.S 1$ CMP.B 12(A4),D0 BNE ClockNotFound 1$ AND.B #$E0,D0 BNE ClockNotFound MOVE.B 8(A4),D0 AND.B #$B8,D0 BNE ClockNotFound OR.B #$40,(A4) MOVE.L SP,A1 MOVE.L A4,A0 MOVEQ #7,D1 2$ MOVE.B (A0),(A1)+ ADDQ.L #2,A0 DBRA D1,2$ AND.B #$BF,(A4) BRA Perm ClockNotFound MOVE.B #$99,1(SP) Perm JSRLIB Permit MOVE.L 8(A5),A0 MOVEQ #5,D0 MOVEQ #0,D1 1$ MOVE.L D1,(A0)+ DBRA D0,1$ MOVE.L 8(A5),A0 MOVE.B 7(SP),3(A0) MOVE.B 6(SP),7(A0) MOVE.B 5(SP),11(A0) MOVE.B 3(SP),15(A0) MOVE.B 2(SP),19(A0) MOVE.B 1(SP),23(A0) ADDQ.L #8,SP UNLK A5 RTS ; ; ; END