00000000: 3B 20 57 4D 4F 44 20 2D 20 31 36 20 42 49 54 20 |; WMOD - 16 BIT |
00000010: 55 4E 53 49 47 4E 45 44 20 52 45 4D 41 49 4E 44 |UNSIGNED REMAIND|
00000020: 45 52 0D 20 44 45 46 20 57 4D 4F 44 20 53 59 54 |ER. DEF WMOD SYT|
00000030: 4D 50 25 20 2C 20 53 59 50 4E 54 25 20 2C 20 2E |MP% , SYPNT% , .|
00000040: 53 59 43 4E 54 0D 20 20 49 46 20 53 59 50 4E 54 |SYCNT. IF SYPNT|
00000050: 20 4F 52 20 53 59 50 4E 54 2B 31 20 3D 20 30 20 | OR SYPNT+1 = 0 |
00000060: 47 4F 54 4F 20 53 59 57 52 45 0D 20 20 4C 44 58 |GOTO SYWRE. LDX|
00000070: 20 23 31 0D 53 59 57 52 31 20 4C 45 54 20 53 59 | #1.SYWR1 LET SY|
00000080: 50 4E 54 2B 31 20 41 4E 44 20 24 38 30 20 3A 20 |PNT+1 AND $80 : |
00000090: 42 4E 45 20 53 59 57 52 33 0D 20 20 49 4E 58 20 |BNE SYWR3. INX |
000000A0: 3A 20 41 53 4C 20 53 59 50 4E 54 20 3A 20 52 4F |: ASL SYPNT : RO|
000000B0: 4C 20 53 59 50 4E 54 2B 31 0D 20 20 47 4F 54 4F |L SYPNT+1. GOTO|
000000C0: 20 53 59 57 52 31 0D 53 59 57 52 33 20 4C 45 54 | SYWR1.SYWR3 LET|
000000D0: 20 53 59 54 4D 50 20 2D 20 53 59 50 4E 54 20 3A | SYTMP - SYPNT :|
000000E0: 20 54 41 59 0D 20 20 4C 44 41 20 53 59 54 4D 50 | TAY. LDA SYTMP|
000000F0: 2B 31 20 3A 20 53 42 43 20 53 59 50 4E 54 2B 31 |+1 : SBC SYPNT+1|
00000100: 0D 20 20 42 43 43 20 53 59 57 52 34 0D 20 20 53 |. BCC SYWR4. S|
00000110: 54 41 20 53 59 54 4D 50 2B 31 20 3A 20 54 59 41 |TA SYTMP+1 : TYA|
00000120: 20 3A 20 53 54 41 20 53 59 54 4D 50 0D 53 59 57 | : STA SYTMP.SYW|
00000130: 52 34 0D 20 20 4C 53 52 20 53 59 50 4E 54 2B 31 |R4. LSR SYPNT+1|
00000140: 20 3A 20 52 4F 52 20 53 59 50 4E 54 0D 20 20 44 | : ROR SYPNT. D|
00000150: 45 58 20 3A 20 42 4E 45 20 53 59 57 52 33 0D 53 |EX : BNE SYWR3.S|
00000160: 59 57 52 35 20 4C 45 54 20 53 59 50 4E 54 20 3D |YWR5 LET SYPNT =|
00000170: 20 53 59 43 4E 54 0D 20 20 4C 45 54 20 53 59 50 | SYCNT. LET SYP|
00000180: 4E 54 2B 31 20 3D 20 53 59 43 4E 54 2B 31 0D 20 |NT+1 = SYCNT+1. |
00000190: 20 4C 44 59 20 23 30 20 3A 20 4C 45 54 20 28 53 | LDY #0 : LET (S|
000001A0: 59 50 4E 54 29 2C 59 20 3D 20 53 59 54 4D 50 0D |YPNT),Y = SYTMP.|
000001B0: 20 20 49 4E 59 20 3A 20 4C 45 54 20 28 53 59 50 | INY : LET (SYP|
000001C0: 4E 54 29 2C 59 20 3D 20 53 59 54 4D 50 2B 31 0D |NT),Y = SYTMP+1.|
000001D0: 20 20 52 45 54 55 52 4E 0D 53 59 57 52 45 20 4C | RETURN.SYWRE L|
000001E0: 45 54 20 24 46 46 20 2D 3E 20 53 59 54 4D 50 20 |ET $FF -> SYTMP |
000001F0: 2D 3E 20 53 59 54 4D 50 2B 31 0D 20 20 47 4F 54 |-> SYTMP+1. GOT|
00000200: 4F 20 53 59 57 52 35 0D 20 45 4E 44 44 45 46 20 |O SYWR5. ENDDEF |
00000210: 57 4D 4F 44 0D 00 00 00 FF |WMOD..... |
; WMOD - 16 BIT UNSIGNED REMAINDER. DEF
WMOD SYTMP% , SYPNT% , .SYCNT. IF SYPNT
OR SYPNT+1 = 0 GOTO SYWRE. LDX #1.SYWR
1 LET SYPNT+1 AND $80 : BNE SYWR3. INX
: ASL SYPNT : ROL SYPNT+1. GOTO SYWR1.S
YWR3 LET SYTMP - SYPNT : TAY. LDA SYTMP
+1 : SBC SYPNT+1. BCC SYWR4. STA SYTMP
+1 : TYA : STA SYTMP.SYWR4. LSR SYPNT+1
: ROR SYPNT. DEX : BNE SYWR3.SYWR5 LET
SYPNT = SYCNT. LET SYPNT+1 = SYCNT+1.
LDY #0 : LET (SYPNT),Y = SYTMP. INY :
LET (SYPNT),Y = SYTMP+1. RETURN.SYWRE L
ET $FF -> SYTMP -> SYTMP+1. GOTO SYWR5.
ENDDEF WMOD.....
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL