01.03.2014 Views

Section 2 - Commodore Computers

Section 2 - Commodore Computers

Section 2 - Commodore Computers

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

IF4F 856C<br />

3200<br />

STA<br />

BUPSTR<br />

1F4F B56C 3200<br />

STA BUFSTR<br />

1F51 IF51 A555<br />

3210<br />

LDA LOA COLORS COLCRS<br />

1F53 IF53 856D 8560<br />

3220<br />

STA BUFSTR+1 SUFSTR+l<br />

3230 EGETC1 EGETCI<br />

1F55 IF55 20791F 2079lP<br />

3240<br />

JSR NEWKGETCH<br />

NEWKGETCtl ; What we really r wanted to replace r 1F58 IP58 844C<br />

3250<br />

STY<br />

DSTAT ; < (<br />

1F5A 1 F5A ADFB02 ADF B02<br />

3260<br />

LDA LOA<br />

ATACHR ; «<br />

1F5D IF5D C99B<br />

3270<br />

CMP ICR 'CR ; «<br />

33280<br />

1F5F lP5F F015 33290<br />

BEO<br />

GOEGETC2<br />

was<br />

just EGETC2<br />

3300 330"<br />

1F61 IF61 20ADF6 3310 331"<br />

JSR<br />

DOSS : < (<br />

1F64 IF64 20B3FC 20B3rC<br />

3320<br />

JSR<br />

SWAP : < (<br />

1F67 IF67 A563<br />

3330<br />

LDA LOA<br />

LOGCOL ; «<br />

1F69 lP69 C971<br />

3340<br />

CMP #113 1113 : «<br />

1F6B lF6B D003 0003<br />

3350<br />

BNE<br />

EGETC6 : «<br />

1F6D lF6D 200AF9<br />

3360<br />

JSR JS R<br />

BELL ; «<br />

3370 EGETC6<br />

1F70 IF70 4C551F<br />

3380<br />

JMP EGETC1 EGETCI : «<br />

3390<br />

3400 GOEGETC3<br />

1F73 IF73 4C7CF6<br />

3410 JMP EGETC3 £GETC3 ;becuz branch can't n ' t get there<br />

e<br />

3420<br />

3430 GOEGETC2<br />

1F76 IF76 4C6EF6<br />

3440 JMP<br />

EGETC2 :becuz branch can't get there<br />

3450<br />

1F79 IF79<br />

3990 . PAGE " The replacement KGETCH routine"<br />

4000<br />

4010<br />

10 ::::::;;;;:::;;;;:;;:::;;;;;::;::::;:;;;;;:;::;<br />

4020<br />

4030<br />

This is the routine that replaces r the<br />

4040<br />

ROM-baaed ROM-based KGETCH (Keyboard GET Character)<br />

4050<br />

routine.<br />

This routine is designed<br />

4060<br />

especially for NEWEGETCH, ETCtl , but could be<br />

4070<br />

called in place of KGETCH if the user<br />

4080 wished.<br />

.<br />

4090<br />

4100 411?10 ; ;;;:;:;:;;:::::;; ;: :::;: : :;;:;:;:: :;:::::;:;;<br />

4110<br />

4120<br />

NEWKGETCH<br />

IF79 1F79 ADC61F AOC61F 4130<br />

LDA LOA KPTR+1 KPTR+l msb of ptr to multikey string<br />

1F7C lF7C F024<br />

4140<br />

BEO<br />

NOSTRING<br />

but no string, so normal KGETCH<br />

1F7E IF7E A5E7 85E7 4150 41 50 STA<br />

ZTEMPl+l<br />

ZTEMP1+1<br />

need to put it in zero page<br />

IF80 1F80 ADC51F ADC51f' 4160<br />

LDA LOA<br />

KPTR ditto the LSB<br />

IF83 1F83 85E6<br />

4170<br />

STA<br />

ZTEMPI<br />

ZTEMP1<br />

IF85 1F85 EEC5lf'<br />

EEC51F 41B0 4180<br />

INC<br />

KPTR<br />

bump ptr for next time<br />

lPSS 1F88 0003 D003 4190<br />

BNE<br />

NI:."WKI NEWK1<br />

lFSA 1F8A<br />

EEC61F 4200<br />

INC<br />

KPTR+l<br />

KPTR+1 MSB also if needed<br />

4210 NEWKI<br />

NEWK1<br />

4220<br />

IPSO 1FBD A000<br />

4230<br />

LOY LDY<br />

,.<br />

#0<br />

IFSP 1F8F BlE6 B1E6 4240<br />

LOA LDA (ZTEMPl), (ZTEMP1),YY<br />

; get next char in str string<br />

If'9l 1F91 1003<br />

4250<br />

BPL<br />

NEWK2<br />

last char has MSB on<br />

If'93 1F93 8CC6lF<br />

8CC61F 4260<br />

STY<br />

KPTR+l<br />

KPTR+1 so reset pointer & flag<br />

4270 NEWK2<br />

l1F96<br />

297P 297F 4280<br />

AND<br />

'S7F #$7F ensure onlyy 7 bits<br />

If'9S 1F98 0002 D002 4290<br />

BNE<br />

NEWK3<br />

except... •..<br />

If'9A 1F9A A99B<br />

430" 4300<br />

LOA LDA 'CR #CR null nul1 becomes CR<br />

4310 NEWK3<br />

lF9C 1F9C BOFS02<br />

8DFB02 4320 STA ATACHR<br />

tthis is whatt KGETCH does<br />

IF9F 1F9F 4C34F6<br />

4330 GORETURN JM JMPP RETURI<br />

RETUR1 seems silly, but it works r 4340<br />

4350<br />

no string waiting fo forr us us--.get ... a real key<br />

4360<br />

4370<br />

NOSTRING<br />

IFA2 1FA2 20E2P6<br />

20E2F6 4380<br />

JSR<br />

KGETCH<br />

a rreal key<br />

IFA5 1FA5 84'1C 844C 4390<br />

STY<br />

DSTAT<br />

why??? just in case<br />

IFA7 1FA7 C900<br />

441'10 4400<br />

CMP ,.<br />

#0<br />

control-comma, the heart<br />

IFA9 1FA9 F0l F0177<br />

4410<br />

BEO BEQ REALCTL<br />

handled special<br />

I1FAB<br />

C91S C91B 4420<br />

CMP<br />

127 #27 one more than control-ZZ<br />

IFAO 1FAD B0F0<br />

4430<br />

BCS<br />

GORETURN<br />

a regular key<br />

4440<br />

: «<br />

: «<br />

: < <<br />

4450 ; if here, we have h control-A through control-Z<br />

l-Z<br />

1FAF IFAF 0A 011.<br />

4460<br />

4470<br />

ASL<br />

A<br />

1FB0 lFS0 A8<br />

4480<br />

TAY<br />

; doubled value used as index<br />

1FB1 If'Bl B9FE1F B9FEl.F 4490 4491'1<br />

LDA LOA STABLE-2.Y STABLE-2, Y; [ -2 - 2 becuz control-A is<br />

1FB4 IFS4 8DC51F BOC5lF<br />

4500<br />

STA KPTR ; value of 1 instead of zero<br />

1FB7 lFS7 B9FF1F B9f'FlF<br />

4510<br />

LDA LOA STABLE-l.Y<br />

STABLE-l, Y<br />

1FBA lFBA 8DC61F 80C61F<br />

KPTR+1 ; ;<br />

4520<br />

1FBD IPSO F0E0 4530 4 STA<br />

BEQ SEQ l<br />

GORETURN MSB of addr of string<br />

oops...no oope no string for this key<br />

4540<br />

1FBF IFSF 4C791F<br />

4550<br />

4560<br />

JMP J MP ; NEWKGETCH and pass back first char c of string<br />

4570<br />

4580<br />

4590<br />

special handling for control-comma ol-comma I1111<br />

I I I<br />

4600<br />

REALCTL<br />

1FC2 IFC2 4CE2F6<br />

4610<br />

JMP J MP KGETCH ; it is used as an escape key<br />

4620<br />

; to allow real control chars c I<br />

4630<br />

4900<br />

4910 MISCELLANEOUS NEOUS RAM<br />

USAGE<br />

1FC5 lFC5 0000<br />

4920<br />

4930<br />

30<br />

KPTR<br />

4921'1<br />

.WORD 0 :master ptr to next char c 4940<br />

1FC7 IFC7 0000 001'10<br />

4950<br />

NEWETBL -WORD .WORD 0,00 , 0 : jto be filled in<br />

1FC9 lFC9 0000 01'11'10<br />

1FCB IPCB 0000<br />

4960 NEWETBLGC .WORD 0,0,0,0,0,0 0,B,e,e,e,0<br />

1FCD IFCO 0000 001'11'1<br />

1FCF IPCF 1'100" 0000<br />

1FD1 IFOI 0000 el0e10<br />

1FD3 IFD3 1'1000 0000<br />

1FD5 lFD5 0000<br />

1FD7 IFD7<br />

4970<br />

4990<br />

. PAGE" The pointer table"<br />

50"'0 5000<br />

5010 ; :::::;::::::;; ; ::::::;:;:::: ::::;;:::: ;;: ; ; ::<br />

5020<br />

5030<br />

The strings and String TA.BLE<br />

TABLE<br />

5040<br />

5050<br />

5060<br />

5070<br />

5080<br />

5090<br />

Each string in use has its address placed<br />

in the corresponding location in STABLE<br />

Any control ol ccharacter whichh should not be<br />

translated should have S0000 $0000 as its<br />

etring string address in STADLE.<br />

STABLE.<br />

5100<br />

5110<br />

5120<br />

:::; (~l~!~~; ~~~: ~~: ~ ~~~; ~~~~~~~~) ; ; : :;;;; : ::;;:<br />

(first, get on even boundary)<br />

lFD7 1FD7 5U0 5130<br />

*= • • ORIGIN+$100<br />

ORIGIN+S100<br />

5140<br />

STABLE<br />

2000 "'000 0000 5150<br />

.WORD SA,SB,SC,SD,SE,SF,SG,SH,SI<br />

SS,SC,SD, SE, SF,SG, SH,SI<br />

20"'2 2002 01'100 0000<br />

2804 2004 0000<br />

2006 3420<br />

2009 2008 0000<br />

20011. 200A 0000<br />

200C 0"'0" 0000<br />

200E 0000<br />

20113 2010 0000<br />

}·**ERROR ]***ERROR -<br />

2012 0000<br />

5-UNOEFINED<br />

5-UNDEFINED<br />

5160 .WORD SJ,SK,SL,SM,SN,SO,SP,SQ,SR<br />

, SK,SL,SM, SN ,SO,SP,SQ, S R<br />

2014 0000<br />

2016 "000 0000<br />

21318 2018 001'10 0000<br />

201A ""00 0000<br />

20lC 201C 0800 0000<br />

2"1£ 201E 7F2e 7F20<br />

21320 2020 0000<br />

2022 0000<br />

}***ERROR<br />

]***ERROR<br />

2024 862" 8620<br />

2026 "' 0000<br />

2828 2028 001'10 0000<br />

5-UNDEFINED<br />

5170 .WORD SS SS,ST.SU,SV,SW,SX,SY,SZ<br />

, ST , SU,SV, SW,SX,SY,SZ<br />

&<br />

n<br />

o<br />

J:<br />

...<br />

c<br />

~<br />

!!!<br />

~<br />

~<br />

i<br />

~

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!