Mercurial > hg > Members > kono > nitros9-code
annotate level1/modules/sscpak.asm @ 1244:9b74e4e23293
Commented out Obj6309 for 6809 port of kernel
author | boisy |
---|---|
date | Tue, 12 Aug 2003 01:32:18 +0000 |
parents | 4e235f213651 |
children | 10957d54bf16 |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
2 * SSCPAK - Tandy Speech/Sound Pak driver | |
3 * | |
4 * $Id$ | |
5 * | |
6 * Ed. Comments Who YY/MM/DD | |
7 * ------------------------------------------------------------------ | |
201 | 8 * 1 From Tandy OS-9 Level One VR 02.00.00 |
0 | 9 |
10 nam SSCPAK | |
11 ttl Tandy Speech/Sound Pak driver | |
12 | |
13 * Disassembled 98/08/23 17:33:46 by Disasm v1.6 (C) 1988 by RML | |
14 | |
15 ifp1 | |
16 use defsfile | |
17 use scfdefs | |
18 endc | |
19 | |
20 tylg set Drivr+Objct | |
21 atrv set ReEnt+rev | |
22 rev set $01 | |
201 | 23 edition set 1 |
0 | 24 |
25 BusyBit equ %10000000 SSPak busy status bit (active low) | |
26 CRA equ $01 PIA CRA offset | |
27 CRB equ $03 PIA CRB offset | |
28 MUXBit equ %00001000 COCO sound MUX control/select bit position | |
29 SpeakBit equ %01000000 SSPak speech status bit (active low) | |
30 SSPData equ $FF7E SSPak data register offset | |
31 SSPReset equ $FF7D SSPak reset register offset | |
32 SSPStat equ $FF7E SSPak status register offset | |
33 | |
34 mod eom,name,tylg,atrv,start,size | |
35 | |
36 rmb 29 | |
37 size equ . | |
38 | |
39 fcb READ.+WRITE. mode byte | |
40 | |
41 name fcs /SSCPAK/ | |
42 fcb edition | |
43 | |
44 start lbra Init | |
45 lbra Read | |
46 lbra Write | |
47 lbra GetStat | |
48 lbra SetStat | |
49 lbra Term | |
50 | |
51 Init pshs a | |
52 lda #$01 | |
53 sta >SSPReset reset SSPak | |
54 clra | |
55 sta >SSPReset end SSPak reset | |
56 puls pc,a | |
57 | |
58 Read ldb #E$BMode | |
59 bra ErrEx | |
60 | |
61 GetStat | |
62 SetStat ldb #E$UnkSvc | |
63 ErrEx orcc #Carry | |
64 Term rts | |
65 | |
66 Write ldy #SSPData | |
1213
4e235f213651
Lots of changes: bootscripts and bootlists added, sources massaged...
boisy
parents:
201
diff
changeset
|
67 ldx #PIA0Base |
4e235f213651
Lots of changes: bootscripts and bootlists added, sources massaged...
boisy
parents:
201
diff
changeset
|
68 ldu #PIA1Base |
0 | 69 cmpa #C$LF linefeed? |
70 beq WritEx ..yep, ignore it | |
71 cmpa #C$CR carriage return? | |
72 bne NormChar ..no | |
73 lda CRA,x get PIA0 CRA | |
74 ldb CRB,x get PIA0 CRB | |
75 pshs b,a save them | |
76 anda #^MUXBit clear PIA0 CA2 control LSBit | |
77 orb #MUXBit set PIA0 B@ control LSBit | |
78 sta CRA,x * set CoCo sound MUX to cartridge input | |
79 stb CRB,x * | |
80 lda CRB,u get PIA1 CRB | |
81 pshs a save it | |
82 ora #MUXBit set PIA1 CB2 control LSBit | |
83 sta CRB,u enable COCO sound MUX | |
84 lda #C$CR get carriage return | |
85 bsr ChkHW wait for SSPak to get ready | |
86 sta ,y store it in SSPak | |
87 bsr SpchWait wait until speech is active | |
88 bsr SSWait wait until speech is inactive | |
89 puls a get original PIA1 CRB | |
90 sta CRB,u disable COCO sound MUX | |
91 puls b,a get original PIA0 CRA/CRB | |
92 sta CRA,x restore original PIA0 CRA | |
93 stb CRB,x restore original PIA0 CRB | |
94 bra WritEx exit | |
95 NormChar bsr ChkHW wait for HW | |
96 sta ,y write char to HW | |
97 WritEx clrb | |
98 rts | |
99 | |
100 * Check SSC hardware, loop until it's ready | |
101 ChkHW pshs a | |
102 ChkHWLp lda ,y get SSPak status | |
103 anda #BusyBit SSPak busy? | |
104 beq ChkHWLp yep, go check again | |
105 puls pc,a | |
106 | |
107 * routine to loop until SSPak speech is inactive | |
108 SSWait pshs x,a | |
109 SSWait2 lda ,y get SSPak status | |
110 anda #SpeakBit SSPak speech active yet? | |
111 bne SSWaitEx yep, exit | |
112 ldx #$0001 sleep remainder of tick | |
113 os9 F$Sleep | |
114 bra SSWait2 | |
115 SSWaitEx puls pc,x,a | |
116 | |
117 * routine to loop until SSPak speech is active | |
118 SpchWait pshs a | |
119 SpchLoop lda ,y get SSPak status | |
120 anda #SpeakBit SSPak speech active yet? | |
121 bne SpchLoop no, go check again | |
122 puls pc,a return | |
123 | |
124 emod | |
125 eom equ * | |
126 end | |
127 |