00000000: 3B 20 57 4F 52 44 20 2D 20 31 36 2D 42 49 54 20 |; WORD - 16-BIT |
00000010: 41 52 49 54 48 45 4D 41 54 49 43 0D 3B 0D 20 44 |ARITHEMATIC.;. D|
00000020: 45 46 20 57 41 44 44 20 53 59 54 4D 50 25 20 2C |EF WADD SYTMP% ,|
00000030: 20 53 59 54 4D 50 31 25 20 2C 20 2E 53 59 50 4E | SYTMP1% , .SYPN|
00000040: 54 0D 20 20 4C 44 59 20 23 30 0D 20 20 4C 45 54 |T. LDY #0. LET|
00000050: 20 53 59 54 4D 50 20 2B 20 53 59 54 4D 50 31 20 | SYTMP + SYTMP1 |
00000060: 2D 3E 20 28 53 59 50 4E 54 29 2C 59 0D 20 20 4C |-> (SYPNT),Y. L|
00000070: 44 41 20 53 59 54 4D 50 2B 31 20 3A 20 41 44 43 |DA SYTMP+1 : ADC|
00000080: 20 53 59 54 4D 50 31 2B 31 20 3A 20 49 4E 59 0D | SYTMP1+1 : INY.|
00000090: 20 20 53 54 41 20 28 53 59 50 4E 54 29 2C 59 0D | STA (SYPNT),Y.|
000000A0: 20 20 52 45 54 55 52 4E 0D 20 45 4E 44 44 45 46 | RETURN. ENDDEF|
000000B0: 20 57 41 44 44 0D 3B 0D 20 44 45 46 20 57 53 55 | WADD.;. DEF WSU|
000000C0: 42 20 53 59 54 4D 50 25 20 2C 20 53 59 54 4D 50 |B SYTMP% , SYTMP|
000000D0: 31 25 20 2C 20 2E 53 59 50 4E 54 0D 20 20 4C 44 |1% , .SYPNT. LD|
000000E0: 59 20 23 30 0D 20 20 4C 45 54 20 53 59 54 4D 50 |Y #0. LET SYTMP|
000000F0: 20 2D 20 53 59 54 4D 50 31 20 2D 3E 20 28 53 59 | - SYTMP1 -> (SY|
00000100: 50 4E 54 29 2C 59 0D 20 20 4C 44 41 20 53 59 54 |PNT),Y. LDA SYT|
00000110: 4D 50 2B 31 20 3A 20 53 42 43 20 53 59 54 4D 50 |MP+1 : SBC SYTMP|
00000120: 31 2B 31 20 3A 20 49 4E 59 0D 20 20 53 54 41 20 |1+1 : INY. STA |
00000130: 28 53 59 50 4E 54 29 2C 59 0D 20 20 52 45 54 55 |(SYPNT),Y. RETU|
00000140: 52 4E 0D 20 45 4E 44 44 45 46 20 57 53 55 42 0D |RN. ENDDEF WSUB.|
00000150: 3B 0D 20 44 45 46 20 57 49 4E 43 20 2E 53 59 50 |;. DEF WINC .SYP|
00000160: 4E 54 0D 20 20 4C 44 59 20 23 30 0D 20 20 4C 45 |NT. LDY #0. LE|
00000170: 54 20 28 53 59 50 4E 54 29 2C 59 20 2B 20 31 20 |T (SYPNT),Y + 1 |
00000180: 2D 3E 20 28 53 59 50 4E 54 29 2C 59 0D 20 20 50 |-> (SYPNT),Y. P|
00000190: 48 50 20 3A 20 49 4E 59 20 3A 20 50 4C 50 0D 20 |HP : INY : PLP. |
000001A0: 20 4C 44 41 20 28 53 59 50 4E 54 29 2C 59 20 3A | LDA (SYPNT),Y :|
000001B0: 20 41 44 43 20 23 30 20 3A 20 53 54 41 20 28 53 | ADC #0 : STA (S|
000001C0: 59 50 4E 54 29 2C 59 0D 20 20 52 45 54 55 52 4E |YPNT),Y. RETURN|
000001D0: 0D 20 45 4E 44 44 45 46 20 57 49 4E 43 0D 3B 0D |. ENDDEF WINC.;.|
000001E0: 20 44 45 46 20 57 44 45 43 20 2E 53 59 50 4E 54 | DEF WDEC .SYPNT|
000001F0: 0D 20 20 4C 44 59 20 23 30 0D 20 20 4C 45 54 20 |. LDY #0. LET |
00000200: 28 53 59 50 4E 54 29 2C 59 20 2D 20 31 20 2D 3E |(SYPNT),Y - 1 ->|
00000210: 20 28 53 59 50 4E 54 29 2C 59 0D 20 20 50 48 50 | (SYPNT),Y. PHP|
00000220: 20 3A 20 49 4E 59 20 3A 20 50 4C 50 0D 20 20 4C | : INY : PLP. L|
00000230: 44 41 20 28 53 59 50 4E 54 29 2C 59 20 3A 20 53 |DA (SYPNT),Y : S|
00000240: 42 43 20 23 30 20 3A 20 53 54 41 20 28 53 59 50 |BC #0 : STA (SYP|
00000250: 4E 54 29 2C 59 0D 20 20 52 45 54 55 52 4E 0D 20 |NT),Y. RETURN. |
00000260: 45 4E 44 44 45 46 20 57 44 45 43 0D 3B 0D 20 44 |ENDDEF WDEC.;. D|
00000270: 45 46 20 57 50 52 49 4E 54 20 53 59 54 4D 50 25 |EF WPRINT SYTMP%|
00000280: 0D 20 20 4C 45 54 20 30 20 2D 3E 20 53 59 54 4D |. LET 0 -> SYTM|
00000290: 50 31 2B 31 20 2D 3E 20 53 59 46 4C 47 0D 53 59 |P1+1 -> SYFLG.SY|
000002A0: 57 50 31 20 49 46 20 53 59 54 4D 50 31 2B 31 20 |WP1 IF SYTMP1+1 |
000002B0: 3D 20 38 20 54 48 45 4E 20 47 4F 53 55 42 20 50 |= 8 THEN GOSUB P|
000002C0: 55 54 20 27 30 27 20 2B 20 53 59 54 4D 50 20 3A |UT '0' + SYTMP :|
000002D0: 20 52 45 54 55 52 4E 0D 20 20 54 41 59 0D 20 20 | RETURN. TAY. |
000002E0: 4C 45 54 20 53 59 50 4E 54 20 3D 20 53 59 57 50 |LET SYPNT = SYWP|
000002F0: 54 2C 59 20 3A 20 49 4E 59 0D 20 20 4C 45 54 20 |T,Y : INY. LET |
00000300: 53 59 50 4E 54 2B 31 20 3D 20 53 59 57 50 54 2C |SYPNT+1 = SYWPT,|
00000310: 59 20 3A 20 49 4E 59 0D 20 20 53 54 59 20 53 59 |Y : INY. STY SY|
00000320: 54 4D 50 31 2B 31 0D 20 20 4C 45 54 20 53 59 54 |TMP1+1. LET SYT|
00000330: 4D 50 31 20 3D 20 27 30 27 0D 53 59 57 50 32 20 |MP1 = '0'.SYWP2 |
00000340: 4C 45 54 20 53 59 54 4D 50 20 3D 20 53 59 54 4D |LET SYTMP = SYTM|
00000350: 50 20 2D 20 53 59 50 4E 54 0D 20 20 4C 44 41 20 |P - SYPNT. LDA |
00000360: 53 59 54 4D 50 2B 31 20 3A 20 53 42 43 20 53 59 |SYTMP+1 : SBC SY|
00000370: 50 4E 54 2B 31 20 3A 20 53 54 41 20 53 59 54 4D |PNT+1 : STA SYTM|
00000380: 50 2B 31 0D 20 20 42 43 43 20 53 59 57 50 33 0D |P+1. BCC SYWP3.|
00000390: 20 20 49 4E 43 20 53 59 54 4D 50 31 20 3A 20 47 | INC SYTMP1 : G|
000003A0: 4F 54 4F 20 53 59 57 50 32 0D 53 59 57 50 33 20 |OTO SYWP2.SYWP3 |
000003B0: 4C 45 54 20 53 59 54 4D 50 20 3D 20 53 59 54 4D |LET SYTMP = SYTM|
000003C0: 50 20 2B 20 53 59 50 4E 54 0D 20 20 4C 44 41 20 |P + SYPNT. LDA |
000003D0: 53 59 54 4D 50 2B 31 20 3A 20 41 44 43 20 53 59 |SYTMP+1 : ADC SY|
000003E0: 50 4E 54 2B 31 20 3A 20 53 54 41 20 53 59 54 4D |PNT+1 : STA SYTM|
000003F0: 50 2B 31 0D 20 20 49 46 20 53 59 54 4D 50 31 20 |P+1. IF SYTMP1 |
00000400: 3D 20 27 30 27 20 54 48 45 4E 0D 20 20 20 49 46 |= '0' THEN. IF|
00000410: 20 53 59 46 4C 47 20 3D 20 30 20 47 4F 54 4F 20 | SYFLG = 0 GOTO |
00000420: 53 59 57 50 31 0D 20 20 45 4E 44 49 46 0D 20 20 |SYWP1. ENDIF. |
00000430: 47 4F 53 55 42 20 50 55 54 20 53 59 54 4D 50 31 |GOSUB PUT SYTMP1|
00000440: 0D 20 20 4C 45 54 20 53 59 46 4C 47 20 3D 20 31 |. LET SYFLG = 1|
00000450: 20 3A 20 47 4F 54 4F 20 53 59 57 50 31 0D 53 59 | : GOTO SYWP1.SY|
00000460: 57 50 54 0D 20 20 2E 57 4F 52 44 20 31 30 30 30 |WPT. .WORD 1000|
00000470: 30 0D 20 20 2E 57 4F 52 44 20 31 30 30 30 0D 20 |0. .WORD 1000. |
00000480: 20 2E 57 4F 52 44 20 31 30 30 0D 20 20 2E 57 4F | .WORD 100. .WO|
00000490: 52 44 20 31 30 0D 20 45 4E 44 44 45 46 20 57 50 |RD 10. ENDDEF WP|
000004A0: 52 49 4E 54 0D 3B 0D 20 44 45 46 20 57 49 4E 50 |RINT.;. DEF WINP|
000004B0: 55 54 20 2E 53 59 43 4E 54 0D 20 20 47 4F 53 55 |UT .SYCNT. GOSU|
000004C0: 42 20 49 4E 50 55 54 20 53 59 42 55 46 24 0D 20 |B INPUT SYBUF$. |
000004D0: 20 4C 45 54 20 30 20 2D 3E 20 53 59 54 4D 50 20 | LET 0 -> SYTMP |
000004E0: 2D 3E 20 53 59 54 4D 50 2B 31 20 3A 20 54 41 59 |-> SYTMP+1 : TAY|
000004F0: 0D 20 20 57 48 49 4C 45 20 53 59 42 55 46 2C 59 |. WHILE SYBUF,Y|
00000500: 20 3C 3E 20 30 0D 20 20 20 49 46 20 3D 20 23 45 | <> 0. IF = #E|
00000510: 4F 4C 20 47 4F 54 4F 20 53 59 57 49 44 0D 20 20 |OL GOTO SYWID. |
00000520: 20 41 53 4C 20 53 59 54 4D 50 20 3A 20 52 4F 4C | ASL SYTMP : ROL|
00000530: 20 53 59 54 4D 50 2B 31 0D 20 20 20 4C 45 54 20 | SYTMP+1. LET |
00000540: 53 59 54 4D 50 31 20 3D 20 53 59 54 4D 50 0D 20 |SYTMP1 = SYTMP. |
00000550: 20 20 4C 45 54 20 53 59 54 4D 50 31 2B 31 20 3D | LET SYTMP1+1 =|
00000560: 20 53 59 54 4D 50 2B 31 0D 20 20 20 4C 44 58 20 | SYTMP+1. LDX |
00000570: 23 34 0D 53 59 57 49 31 20 4C 45 54 20 53 59 54 |#4.SYWI1 LET SYT|
00000580: 4D 50 20 3D 20 53 59 54 4D 50 20 2B 20 53 59 54 |MP = SYTMP + SYT|
00000590: 4D 50 31 0D 20 20 20 4C 44 41 20 53 59 54 4D 50 |MP1. LDA SYTMP|
000005A0: 2B 31 20 3A 20 41 44 43 20 53 59 54 4D 50 31 2B |+1 : ADC SYTMP1+|
000005B0: 31 20 3A 20 53 54 41 20 53 59 54 4D 50 2B 31 0D |1 : STA SYTMP+1.|
000005C0: 20 20 20 44 45 58 20 3A 20 42 4E 45 20 53 59 57 | DEX : BNE SYW|
000005D0: 49 31 0D 20 20 20 4C 45 54 20 53 59 42 55 46 2C |I1. LET SYBUF,|
000005E0: 59 20 2D 20 27 30 27 20 2B 20 53 59 54 4D 50 20 |Y - '0' + SYTMP |
000005F0: 2D 3E 20 53 59 54 4D 50 0D 20 20 20 4C 44 41 20 |-> SYTMP. LDA |
00000600: 53 59 54 4D 50 2B 31 20 3A 20 41 44 43 20 23 30 |SYTMP+1 : ADC #0|
00000610: 20 3A 20 53 54 41 20 53 59 54 4D 50 2B 31 0D 20 | : STA SYTMP+1. |
00000620: 20 20 49 4E 59 0D 20 20 45 4E 44 57 48 49 4C 45 | INY. ENDWHILE|
00000630: 0D 53 59 57 49 44 20 4C 44 59 20 23 30 0D 20 20 |.SYWID LDY #0. |
00000640: 4C 45 54 20 53 59 50 4E 54 20 3D 20 53 59 43 4E |LET SYPNT = SYCN|
00000650: 54 0D 20 20 4C 45 54 20 53 59 50 4E 54 2B 31 20 |T. LET SYPNT+1 |
00000660: 3D 20 53 59 43 4E 54 2B 31 0D 20 20 4C 45 54 20 |= SYCNT+1. LET |
00000670: 28 53 59 50 4E 54 29 2C 59 20 3D 20 53 59 54 4D |(SYPNT),Y = SYTM|
00000680: 50 0D 20 20 49 4E 59 20 3A 20 4C 45 54 20 28 53 |P. INY : LET (S|
00000690: 59 50 4E 54 29 2C 59 20 3D 20 53 59 54 4D 50 2B |YPNT),Y = SYTMP+|
000006A0: 31 0D 20 20 52 45 54 55 52 4E 0D 20 45 4E 44 44 |1. RETURN. ENDD|
000006B0: 45 46 20 57 49 4E 50 55 54 0D 00 00 00 00 |EF WINPUT..... |
; WORD - 16-BIT ARITHEMATIC.;. DEF WADD
SYTMP% , SYTMP1% , .SYPNT. LDY #0. LET
SYTMP + SYTMP1 -> (SYPNT),Y. LDA SYTMP
+1 : ADC SYTMP1+1 : INY. STA (SYPNT),Y.
RETURN. ENDDEF WADD.;. DEF WSUB SYTMP%
, SYTMP1% , .SYPNT. LDY #0. LET SYTMP
- SYTMP1 -> (SYPNT),Y. LDA SYTMP+1 : S
BC SYTMP1+1 : INY. STA (SYPNT),Y. RETU
RN. ENDDEF WSUB.;. DEF WINC .SYPNT. LDY
#0. LET (SYPNT),Y + 1 -> (SYPNT),Y. P
HP : INY : PLP. LDA (SYPNT),Y : ADC #0
: STA (SYPNT),Y. RETURN. ENDDEF WINC.;.
DEF WDEC .SYPNT. LDY #0. LET (SYPNT),
Y - 1 -> (SYPNT),Y. PHP : INY : PLP. L
DA (SYPNT),Y : SBC #0 : STA (SYPNT),Y.
RETURN. ENDDEF WDEC.;. DEF WPRINT SYTMP%
. LET 0 -> SYTMP1+1 -> SYFLG.SYWP1 IF S
YTMP1+1 = 8 THEN GOSUB PUT '0' + SYTMP :
RETURN. TAY. LET SYPNT = SYWPT,Y : IN
Y. LET SYPNT+1 = SYWPT,Y : INY. STY SY
TMP1+1. LET SYTMP1 = '0'.SYWP2 LET SYTM
P = SYTMP - SYPNT. LDA SYTMP+1 : SBC SY
PNT+1 : STA SYTMP+1. BCC SYWP3. INC SY
TMP1 : GOTO SYWP2.SYWP3 LET SYTMP = SYTM
P + SYPNT. LDA SYTMP+1 : ADC SYPNT+1 :
STA SYTMP+1. IF SYTMP1 = '0' THEN. IF
SYFLG = 0 GOTO SYWP1. ENDIF. GOSUB PU
T SYTMP1. LET SYFLG = 1 : GOTO SYWP1.SY
WPT. .WORD 10000. .WORD 1000. .WORD 1
00. .WORD 10. ENDDEF WPRINT.;. DEF WINP
UT .SYCNT. GOSUB INPUT SYBUF$. LET 0 -
> SYTMP -> SYTMP+1 : TAY. WHILE SYBUF,Y
<> 0. IF = #EOL GOTO SYWID. ASL SYT
MP : ROL SYTMP+1. LET SYTMP1 = SYTMP.
LET SYTMP1+1 = SYTMP+1. LDX #4.SYWI1
LET SYTMP = SYTMP + SYTMP1. LDA SYTMP
+1 : ADC SYTMP1+1 : STA SYTMP+1. DEX :
BNE SYWI1. LET SYBUF,Y - '0' + SYTMP
-> SYTMP. LDA SYTMP+1 : ADC #0 : STA S
YTMP+1. INY. ENDWHILE.SYWID LDY #0.
LET SYPNT = SYCNT. LET SYPNT+1 = SYCNT+
1. LET (SYPNT),Y = SYTMP. INY : LET (S
YPNT),Y = SYTMP+1. RETURN. ENDDEF WINPU
T.....
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL