annotate os9/level2/cmds/sbc09.asm @ 98:ba0af2b8836b

fix sbc09 echo problem
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 27 Dec 2018 08:23:42 +0900
parents 5aeff8abca9c
children c9dc1be48de4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 ********************************************************************
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 * sbc09 emulator
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 *
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 * $Id$
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 *
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 * Edt/Rev YYYY/MM/DD Modified by
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 * Comment
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 * ------------------------------------------------------------------
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 * 1 2018/08/20 S. Kono
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 * Emulatoe sbc09 on os9 lv2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 nam Sbc09
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 ttl Sbc09 emulator
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 ifp1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 use defsfile
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 endc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 * Module header definitions
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 tylg set Prgrm+Objct
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 atrv set ReEnt+rev
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 rev set $00
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 edition set 1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 mod eom,name,tylg,atrv,start,size
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 org 0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 ioentry rmb $80
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 filepath rmb 2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 parmptr rmb 2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 stdin rmb 1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 chksum rmb 1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 bcount rmb 1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 adr rmb 2
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
35 work rmb 2
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 readbuff rmb $100
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 org $400
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 emstart rmb $e000-.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 size equ .
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 name fcs /Sbc09/
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 fcb edition
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
44 start clr <stdin
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 stx <parmptr save parameter pointer
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
46 stu <work save parameter pointer
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 lda #READ. read access mode
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 os9 I$Open open file
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
49 lbcs L0049 branch if error
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 sta <filepath else save path to file
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 stx <parmptr and updated parm pointer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 L001F lda <filepath get path
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 leax readbuff,u point X to read buffer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ldy #200 read up to 200 bytes
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 os9 I$ReadLn read it!
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 bcs L0035 branch if error
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 bsr srecords
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 bra L001F else exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 L0035 cmpb #E$EOF did we get an EOF error?
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 * bne L0049 exit if not
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 lda <filepath else get path
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 os9 I$Close and close it
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 bcs L0049 branch if error
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 * ldx <parmptr get param pointer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 * lda ,x get char
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 * cmpa #C$CR end of command line?
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 * bne start branch if not
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 copytbl
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
70 lda #$17 lbra
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
71 sta $e400
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
72 leax Exit,pcr
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
73 leax -$e403,x
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
74 stx $e401
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 leax iotbl,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 leay iotblend,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 pshs x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 ldy #(iotblend-iotbl)
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 l1 ldb #$7e * JMP
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 stb ,u+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 ldd ,x++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 addb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 adca ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 std ,u++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 cmpx 2,s
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
86 ble l1
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 puls x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 jmp $400
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
90 Exit lbsr setecho
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
91 * ldx <work
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
92 * leax readbuff,x
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
93 * ldb #1
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
94 * lbsr getline
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
95 * lbsr getpoll
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
96 * lda <stdin
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
97 * os9 I$Close
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
99 clrb
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
100 os9 F$Exit
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
101 * no return
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
102
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 iotbl
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
105 fdb getchar-iotbl ; 0
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
106 fdb putchar-iotbl ; 3
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
107 fdb getline-iotbl ; 6
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
108 fdb putline-iotbl ; 9
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
109 fdb putcr-iotbl ; $C
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
110 fdb getpoll-iotbl ; $F
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
111 fdb xopenin-iotbl ; $12
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
112 fdb xopenout-iotbl ; $15
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
113 fdb xabortin-iotbl ; $18
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
114 fdb xclosein-iotbl ; $1B
97
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
115 fdb xcloseout-iotbl ; $1E
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
116 fdb delay-iotbl ; $21
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
117 fdb noecho-iotbl ; $24
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
118 fdb setecho-iotbl ; $27
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
119 fdb exit-iotbl ; $2a
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 iotblend
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 L0049
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 err ldb #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 bra Exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 srecords
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 leax readbuff,u
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 clr <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 sline lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 cmpa #'S'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 bne slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 cmpa #'1'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 bne slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 subb #3
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 stb <bcount
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 stb <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 stb <adr+1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 lda <bcount
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 ldy <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 sbyte bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 stb ,y+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 deca
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 bgt sbyte
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 lda <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 cmpa #$ff
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 bne err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 gthex4 pshs d
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 stb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 puls d,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 gthex2 pshs b
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 addb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 addb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 stb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 puls b,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 gthex1 ldb ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 subb #'0'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 blo rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 cmpb #9
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 bls rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 subb #7
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 putchar * Output one character in B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 PSHS X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 BRA OUTCH1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 getchar * Input one character into B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 LDY #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 OS9 I$Read
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 BCS GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 putcr * Output a newline.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 LDB #C$CR
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 bsr putchar
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 LDB #C$LF
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 PSHS X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 OUTCH1 PSHS A,B
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 LDA #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 LDY #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 OS9 I$Write
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 getpoll
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 PSHS X,Y,D
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 LDB #SS.Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 OS9 I$GetStt
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 CMPB #$F6 Not Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 BNE RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 CLRB
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 ORCC #1 set carry to indicate ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 RNSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 getline * Input line at address in X, length in B.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 PSHS A,B,X,Y
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
225 clr ,s
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 GETLN0
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
227 ldy ,s
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
228 clra
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 OS9 I$ReadLn
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 BCS GETLN0
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
231 LEAY -1,Y
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 GETLN1 STY ,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 putline * Output string at address in X, length in B.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 CLRA
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 TFR D,Y
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
238 CLRA
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 OS9 I$WritLn
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 xopenin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 xopenout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 xabortin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 xclosein
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 xcloseout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 RTS
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247
97
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
248 setecho lda #1
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
249 bra sss
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
250 noecho clra
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
251 sss leas -128,s
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
252 leax ,s
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
253 pshs a
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
254 clra
97
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
255 ldb #SS.Opt
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
256 OS9 I$GetStt
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
257 bcs err2
97
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
258 LDA ,s
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
259 STA PD.EKO-PD.OPT,X
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
260 setopts
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
261 ldb #SS.Opt
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
262 clra
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
263 OS9 I$SetStt
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
264 err2
98
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
265 puls a
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
266 leas 128,s
ba0af2b8836b fix sbc09 echo problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 97
diff changeset
267 rts
97
5aeff8abca9c add echo control on sbc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 94
diff changeset
268
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
269
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 delay PSHS D,X * address **$21**
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 * On input the D register contains the number of timer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 * ticks to wait. Each timer tick is 20ms
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 TFR D,X
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 OS9 F$Sleep
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 PULS D,X,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
276
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 emod
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
279 eom equ *
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 end