Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Program 1-<br />
Program I.<br />
0000 13131313 13990 0990<br />
FCB3 FCB)<br />
FABS<br />
FA88<br />
01368 006B<br />
0054 eelS4<br />
0055<br />
006e 006C<br />
F6E2<br />
004C<br />
11l2FB 02FB<br />
009B 0e9B<br />
F66E<br />
F66E<br />
F67C<br />
0063<br />
"063<br />
F90A<br />
F90A<br />
F6AD<br />
F634<br />
F634<br />
13311'. 031A<br />
02E7<br />
0000 0131313<br />
0022 "1322<br />
0000 ee"Ii'<br />
00E6 0BEG<br />
00FF<br />
0100 0U'"<br />
0080 1313813<br />
IF0'"<br />
1F00<br />
2200<br />
0000 011111'"<br />
1F00 iF00<br />
113 1000 0121<br />
1010<br />
1010<br />
113213 1020<br />
113313 1030<br />
U40 1040<br />
1050<br />
113613 1060<br />
11370 1070<br />
1080 HIS0<br />
113913 1090<br />
IHH'l 1100<br />
1110'<br />
11213 1120<br />
1130<br />
1140<br />
1150<br />
1160<br />
1170<br />
1181'1<br />
118PI<br />
11913 1190<br />
1200 12130<br />
1210<br />
1220 122H<br />
1230<br />
1230<br />
1240<br />
125121<br />
1250<br />
1260<br />
1270<br />
1280<br />
1290<br />
1300<br />
1310<br />
1320<br />
1330<br />
1340<br />
1350<br />
1360<br />
1370<br />
1380<br />
1390<br />
1490<br />
1500<br />
1510<br />
15213 1520<br />
1530 15313<br />
1540 154(11<br />
1550<br />
1560<br />
1570<br />
1590 1580<br />
1590<br />
16€1e 1600<br />
1800 181313<br />
18113 1810<br />
1820 1828<br />
1830 18313<br />
1840 1841'1<br />
1850<br />
186£'1 1R60<br />
1900<br />
1910<br />
1920<br />
1990<br />
2000<br />
2000<br />
2010 21310<br />
2020 21320<br />
2030<br />
2040 2fl40<br />
2050 213513<br />
.PAGE " EQUATES"<br />
:1 :1: ::; :l:ll::::::;;:: ::11::;; :l::::::: l;: Jl:;:;<br />
EASYKEY —--<br />
A program to ease repetitive typing<br />
when using Atari BASIC, etc.<br />
.<br />
Written by Bill eill Wilkinson<br />
Optimized Systems Software<br />
for the May, May. 1982, issue of COMPUTE!<br />
]<br />
;:: Jll :: I:: : ::: : I: :: I:: : : : ::::: I:::::::::: I::: I :::<br />
$FCR3 $FCS3<br />
SFA88 $FA88<br />
$6B<br />
$54<br />
$55<br />
S6C $6C<br />
$F6E2<br />
$4C<br />
S2FB $2FB<br />
$9B<br />
SF66E $P66E<br />
$F67C<br />
$63<br />
$F90A<br />
$F6AD<br />
$F634<br />
r EQUATES UNIQUE TO THIS ROUTINE<br />
QUOTE =<br />
ZTEMP1 =<br />
LOW<br />
KQUIT -<br />
.PAGE "<br />
EQUATES"<br />
Equates to subroutines, SUbroutines, etc., located<br />
in the Atari OS as ROMs<br />
CAUTION: : these equates are for the<br />
revision 'A' ' A ' ROMs.<br />
.<br />
SWAP<br />
ERANGE =<br />
BUFCNT =<br />
ROWCRS = ..<br />
COLCRS<br />
=<br />
BUFSTR =<br />
KGETCH ■<br />
DSTAT -<br />
ATACHR =<br />
CR<br />
EGETC2 -<br />
EGETC3 EGETCJ =<br />
LOGCOL = '"<br />
BELL<br />
DOSS<br />
RETUR1 RETURI = ..<br />
HATABS = $31A<br />
SYSTEMLOMEM - $2E7<br />
. PAGE<br />
EQUATES UNIQUE TO THIS ROUTINE<br />
Quon:<br />
NUL<br />
ZTEMPl<br />
HIGH<br />
KQUIT<br />
$22<br />
0<br />
•<br />
$E6<br />
; The " character<br />
; A nul...which ..... becomes a CR<br />
shared .... ith fltg pt routines<br />
; shared with fltg pt routines<br />
$FF $Ff'<br />
$100<br />
$80 $8' :MSBit ;MSBit says quit<br />
; I::;;;;;;:; : ;;; ;;;;;;;;;;;;;;;;;:;;:;; ;;;;<br />
cnOOSE THIS ORIGIN TO FIT YOUR SYSTEM II<br />
; CHOOSE THIS ORIGIN TO FIT YOUR SYSTEM 11<br />
:;: I::;;::::: I:: ::;:::: I:;;;;;;;;:;;::: ;; ;;<br />
ORIGIN = .. $1F00 $lP00<br />
NEWLOMEM = ORIGIN+$300<br />
ORIGIN+$30e1<br />
*= *-<br />
ORIGIN<br />
-PAGE . PAGE" " Hooking the driver into OS' OS"<br />
; I;; ;:1 I:::: :11: ;1: ;1: :;;:;;:;;;;;;;;;;:::::::;;<br />
The 'HOOKUP' ' routine r —--<br />
this portion of the code simply hooks hOOKS<br />
1F00 lF00 A200<br />
1F02 IF02 BD1A03 BDIA03<br />
1F05 IF05 C945<br />
1F07 IF07 F007<br />
1F09 lF09 E8<br />
1F0A IF0A E8<br />
1F0B IFeB E8<br />
1F0C IF''C D0F4 00F4<br />
1F0E IFeE F0F0 FeFei<br />
IFI0 BOlB03<br />
1F10 BD1B03<br />
1F13 IF13 8SE6 85E6<br />
1F15 IFI5 BD1C03 BOIC03<br />
1F18 S5E7<br />
lFI8 85E7<br />
1F1A IFlA A9C7<br />
1F1C IFIC 9D1B03 901803<br />
1F1F IF IF A91F A9lF<br />
1F21 IF2I 9D1C03 90lC03<br />
1F24 IF24 A00F Ael0F<br />
1F26 IF26 B1E6 81E6<br />
1F28 IF2B 99C71F<br />
1F2B lF2B 88 8B<br />
1F2C lF2C 10FB 10F8<br />
1F2E IF2E A942<br />
1F30 IF30 8DCB1F BDCBlF<br />
1F33 IF33 A91F<br />
1F35 IF35 8DCC1F 80CClF<br />
1F38 lFJ8 A9R0 A9P10<br />
1F3A IFJA 8DE702 BDE702<br />
1F3D IF3D A922<br />
1F3F IF3F 8DE802 BOE802<br />
1F42 IF42 60<br />
1F43 IF43<br />
1F43 IF43 20B3FC<br />
lF46 2088FA<br />
1F46 2088FA<br />
IF49 1F49 A56B A5fiB<br />
1F4B IF4B D026 0026<br />
1F4D IF4D A554<br />
2060<br />
2070<br />
2080<br />
2090<br />
2100<br />
2110<br />
2120<br />
2130<br />
2140<br />
2150<br />
2160<br />
2170<br />
2180<br />
2190<br />
220€l 2200<br />
2210 221£1<br />
2220<br />
2230 22J0<br />
2240<br />
2250<br />
2260<br />
2270<br />
2280 22813<br />
2290<br />
2300<br />
2310<br />
2320 23213<br />
2330<br />
2340<br />
2350<br />
2360<br />
2370<br />
2380<br />
2390<br />
2400<br />
2410<br />
2420<br />
2430<br />
2440<br />
2450<br />
2460<br />
2470<br />
2480<br />
2500<br />
2510<br />
2520<br />
2530<br />
2540<br />
2550<br />
2560<br />
2570<br />
2580<br />
2990<br />
3000 30013<br />
3010<br />
3020<br />
3030<br />
3040<br />
3050<br />
3060<br />
3070 3B70<br />
3080<br />
3090<br />
3100<br />
3110<br />
3120<br />
3130<br />
3140<br />
3150<br />
3160<br />
3170<br />
31901<br />
our replacement driver into the E:<br />
handler vector table.<br />
; ;;:;;;;;;;; ; ::; ; :::: :::::::::: ::::;;;;; I;:::;;;<br />
HOOKUP<br />
HOOKUP<br />
LDX LOX #0<br />
LOOKLOOP "<br />
LDA LD" HATABS,X<br />
liATABS , X<br />
CMP #'E I ' E<br />
BEQ EFND<br />
BEO<br />
IINX<br />
IINX<br />
INX<br />
BNE<br />
BEQ<br />
; found the E driver<br />
EFND EFNO<br />
LDA LOA HATABS+l.X HATABS+l, X ; get LSB of addr<br />
STA ZTEMP1 ZTEMPI<br />
LDA LOA<br />
HATABS+2,X ;: and MSB<br />
STA ZTEMP1+1 ZTEMPl+l<br />
LDA LOA SNEWETBL6LOW<br />
'NEWETBL&LOW<br />
STA HATABS+l.X HATABS+I,X ; replace with our table<br />
LDA LD" tNEWETBL/HIGH<br />
'NEWET STA HATABS+2.X<br />
,X<br />
EMVLP<br />
; E: handler vector table is moved<br />
STA NEWETBLGC ; change the get character ptr<br />
LDA LOA JNEWEGETCH-1/HIGH<br />
'NEWEGETCH- l / HIGH<br />
STA NEWETBLGC+1<br />
; tables, etc. are corrected<br />
; move lomem<br />
LDA LD" INEWLOMEM5.LOW<br />
STA<br />
SYSTEMLOMEM<br />
LDA LOA #NEWLOMEM/HIGH<br />
'NEWLOMEM !HIGH<br />
STA SYSTEMLOMEM+1<br />
SYSTEMLOMEM+l<br />
RTS<br />
.PAGE " The replacement E: driver"<br />
This routine r o replaces E:'a ' s get-a-character<br />
entry point. .<br />
;; ;; ;:;;;;;;:: ; ; ; :;;:;;;;;;;;;;;:::::::::::::;::<br />
JSR<br />
LDA LOA<br />
EFNO<br />
LOOKLOOP<br />
HOOKUP<br />
:start at beginning<br />
looking for the E: driver<br />
:got it<br />
to next name<br />
keep looking<br />
actually, this is fatal error<br />
LDY LOY #15 fl 5 ; all bytes of table<br />
LDA LOA (ZTEMPl),Y; (ZTEMP1),Y ; get a byte of old tbl<br />
STA NEWETBL.Y , Y; ; to our table<br />
DEY<br />
BPL EMVLP ; and do more<br />
E: h andler vector table is moved<br />
LDA LOA<br />
STA<br />
STA<br />
'NEWEGETCH-l&LOW<br />
(tNEWEGETCH-l&LOW<br />
NEWETBLGC; change the get character ptr<br />
NEWETBLGC+l<br />
tables , etc . are corrected<br />
move lomem<br />
.PAGE<br />
'NEWLOMEM&LOW<br />
The replacement E: driver ft<br />
r:::::::::::::::::;::::::::::::;:;:;;;;;; ;;; ;;;;<br />
Begin the actual E: replacement r routine<br />
NEWEGETCH<br />
NEWEGt:TCH<br />
JSR<br />
JSR<br />
SWAP ;cc < < lines with .... comments starting<br />
ERANGE ;«