Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.sys.apple2.programmer > #1304
| Path | csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | D Finnigan <dog_cow@macgui.com> |
| Newsgroups | comp.sys.apple2.programmer |
| Subject | LJK Lower Case Character Generator driver |
| Date | Tue, 2 Sep 2014 02:10:09 +0000 (UTC) |
| Organization | Mac GUI |
| Lines | 182 |
| Message-ID | <dog_cow-1409623804@macgui.com> (permalink) |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8 |
| Content-Transfer-Encoding | 8bit |
| Injection-Date | Tue, 2 Sep 2014 02:10:09 +0000 (UTC) |
| Injection-Info | mx05.eternal-september.org; posting-host="ac9e0e4d7dd3957fb97803ee6801bab8"; logging-data="14004"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Y9z6QRX9hp0t6vlv1PBwQ" |
| User-Agent | Mac GUI Usenet |
| Cancel-Lock | sha1:AnP8R59B9dRAzzTL+Ied9mCUCvU= |
| Xref | csiph.com comp.sys.apple2.programmer:1304 |
Show key headers only | View raw
Source code for the LJK Enterprises Lower Case Character Generator. Works
with the single-wire shift key mod. Assembles in Merlin Pro and whatever
other assemblers were around in 1981.
I typed this out of the manual. It assembled with no errors, so that means
there are no typos! ;-)
Typos on lines 14 and 15 were in the original document, so I reproduced
them.
Reference:
http://macgui.com/usenet/?group=1&id=60253&highlight=ljk
---------------------
1 **************************
2 * LOWER CASE SOFTWARE *
3 * VERSION 1.0 *
4 * COPYRIGHT 1981 BY *
5 * LJK ENTERPRISES, INC. *
6 * COMMERCIAL RIGHTS *
7 * RESERVED *
8 **************************
9 *
10 KSW EQU $38 keyhook
11 DHOOK EQU $3EA rehook of dos
12 BASE EQU $28 screen address
13 KEYIN EQU $FD1B read keyboard
14 CR EQU $8D carraige return
15 SP EQU $A0 space chareturn
16 CH EQU $24 cursor horizontal
17 RDKEY EQU $FD0C ind read keybd
18 CUR1 EQU $40 default (flash)
19 CUR2 EQU 0 lc no flash
20 STACK EQU $100 6502 stack
21 SHIFT EQU $C063 paddle shift
22 *
23 ORG $300
24 ;OBJ *300
25 *
0300: A9 0B 26 SETHOOK LDA #LC set our hooks
0302: 85 38 27 STA KSW on the input
0304: A9 03 28 LDA #>LC
0306: 85 39 29 STA KSW+1
0308: 4C EA 03 30 JMP DHOOK rehook dos to save
31 *
030B: 48 32 LC PHA resave character
030C: C9 E0 33 CMP #$E0 is it lower?
030E: 90 02 34 BCC LC1 ok to put
0310: 49 20 35 EOR #$20 set to upper
0312: 29 3F 36 LC1 AND #$3F put to screen
0314: 0D AA 03 37 ORA CUR use cur as or mask
0317: 91 28 38 STA (BASE),Y
0319: 68 39 PLA keyin will restore
031A: 20 1B FD 40 JSR KEYIN screen character
031D: 8D AC 03 41 STA CHAR save for now
0320: 8E AB 03 42 STX XSAVE
0323: BA 43 TSX get stack
0324: BD 06 01 44 LDA STACK+6,X see if getln
0327: C9 FD 45 CMP #$FD by looking on stack
0329: D0 0C 46 BNE DOKEY will change by 2
032B: BD 05 01 47 LDA STACK+5,X without dos
032E: C9 77 48 CMP #$77 if getln change to
0330: D0 05 49 BNE DOKEY addinp to bypass
0332: A9 83 50 LDA #$83 conversion to caps
0334: 9D 05 01 51 STA STACK+5,X found it!
0337: AE AB 03 52 DOKEY LDX XSAVE restore X reg
033A: AD AC 03 53 LDA CHAR and char
033D: C9 8C 54 CMP #$8C ^L shift toggle?
033F: D0 0B 55 BNE LC2 no, go on
0341: AD A9 03 56 LDA CAPS invert msb of caps
0344: 49 FF 57 EOR #$FF
0346: 20 9B 03 58 jsr DOCUR and place cur right
0349: 4C 0C FD 59 LC0 JMP RDKEY get new key exit
===== Page 2 =====
034C: C9 9A 60 LC2 CMP #$9A is it ^Z?
034E: D0 0E 61 BNE LC3
0350: 20 0C FD 62 JSR RDKEY recursive
0353: 29 0F 63 AND #$F mask of char
0355: C9 0C 64 CMP #12 and see if in range
0357: B0 F0 65 BCS LC0 no, so get new key
0359: A8 66 TAY else, read from table
035A: B9 AD 03 67 LDA SCHAR,Y and exit
035D: 60 68 RTS
69 *
035E: C9 95 70 LC3 CMP #$95 since we skip capstst
0360: D0 06 71 BNE LC4 we must do screen read
0362: B1 28 72 LDA (BASE),Y ourselves
0364: 09 80 73 ORA #$80 make upper case
0366: 30 0C 74 BMI KADJ adj for lc addition
0368: C9 8D 75 LC4 CMP #CR if a cr set to caps lock
036A: D0 08 76 BNE KADJ
036C: A9 FF 77 LDA #$FF
036E: 20 9B 03 78 JSR DOCUR
0371: A9 8D 79 LDA #CR
0373: 60 80 RTS
0374: C9 C0 81 KADJ CMP #"@ handle p,m,n special
0376: D0 04 82 BNE KADJ2
0378: 49 10 83 KADJ1 EOR #$10 by eor with $10
037A: D0 08 84 BNE KADJ3
037C: C9 DD 85 KADJ2 CMP #$DD shift m
037E: 90 04 86 BCC KADJ3
0380: C9 DF 87 CMP #$DF shift n+1
0382: 90 F4 88 BCC KADJ1
0384: C9 C1 89 KADJ3 CMP #"A alpha test for caps
0386: 90 20 90 BCC RTS1 if leff than no adj
0388: C5 DB 91 CMP "Z+1 if >Z no adj
038A: B0 1C 92 BCS RTS1
038C: 2C A9 03 93 BIT CAPS do we adj to lc
038F: 30 02 94 BMI KADJ4 no, go on
0391: 09 20 95 ORA #$20 adjust to lc
0393: 2C 63 C0 96 KADJ4 BIT SHIFT is shift key hit?
0396: 30 10 97 BMI RTS1 no, exit
0398: 49 20 98 EOR #$20 yes, invert cap order
039A: 60 99 RTS
100 *
039B: 8D A9 03 101 DOCUR STA CAPS do default case
039E: 10 03 102 BPL DOCUR1 not default, load lc
03A0: A9 40 103 LDA #CUR1 load upper cursor
03A2: 2C 104 DFB $2C skip next lda
03A3: A9 00 105 DOCUR1 LDA #CUR2
03A5: 8D AA 03 106 STA CUR save mask
03A8: 60 107 RTS1 RTS and exit
108 *
03A9: FF 109 CAPS DFB $FF set for default
03AA: 40 110 CUR DFB $40 to up at startup
03AB: 00 111 XSAVE BRK
03AC: 00 112 CHAR BRK
03AD: C0 DB DC 113 SCHAR HEX C0DBDCDDDEDFE0FBFCFDFEFF
03B0: DD DE DF E0 FB FC FD FE
03B8: FF
114 *
===== Page 3 =====
--End assembly, 185 bytes, Errors: 0
Symbol table - alphabetical order:
BASE =$28 CAPS =$03A9 ? CH =$24 CHAR
=$03AC
CR =$8D CUR =$03AA CUR1 =$40 CUR2 =$00
DHOOK =$03EA DOCUR =$039B DOCUR1 =$03A3 DOKEY
=$0337
KADJ =$0374 KADJ1 =$0378 KADJ2 =$037C KADJ3
=$0384
KADJ4 =$0393 KEYIN =$FD1B KSW =$38 LC
=$030B
LC0 =$0349 LC1 =$0312 LC2 =$034C LC3
=$035E
LC4 =$0368 RDKEY =$FD0C RTS1 =$03A8 SCHAR
=$03AD
? SETHOOK =$0300 SHIFT =$C063 ? SP =$A0 STACK
=$0100
XSAVE =$03AB
Symbol table - numerical order:
CUR2 =$00 ? CH =$24 BASE =$28 KSW =$38
CUR1 =$40 CR =$8D ? SP =$A0 STACK
=$0100
? SETHOOK =$0300 LC =$030B LC1 =$0312 DOKEY
=$0337
LC0 =$0349 LC2 =$034C LC3 =$035E LC4
=$0368
KADJ =$0374 KADJ1 =$0378 KADJ2 =$037C KADJ3
=$0384
KADJ4 =$0393 DOCUR =$039B DOCUR1 =$03A3 RTS1
=$03A8
CAPS =$03A9 CUR =$03AA XSAVE =$03AB CHAR
=$03AC
SCHAR =$03AD DHOOK =$03EA SHIFT =$C063 RDKEY
=$FD0C
KEYIN =$FD1B
--
]DF$
Apple II Book: http://macgui.com/newa2guide/
Usenet: http://macgui.com/usenet/ <-- get posts by email!
Apple II Web & Blog hosting: http://a2hq.com/
Back to comp.sys.apple2.programmer | Previous | Next — Next in thread | Find similar | Unroll thread
LJK Lower Case Character Generator driver D Finnigan <dog_cow@macgui.com> - 2014-09-02 02:10 +0000 LJK Lower Case Character Generator driver Antoine Vignau <antoine.vignau@laposte.net> - 2014-09-05 09:27 -0700
csiph-web