annotate src/os9/level2/cmds/sbc09.asm @ 91:1de7b2760b9d

fix basic
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 22 Aug 2018 15:02:28 +0900
parents 60e629904ad6
children
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
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 start
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 clr <stdin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 stx <parmptr save parameter pointer
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
47 stu <work save parameter pointer
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 lda #READ. read access mode
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 os9 I$Open open file
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 bcs L0049 branch if error
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 sta <filepath else save path to file
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 stx <parmptr and updated parm pointer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 L001F lda <filepath get path
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 leax readbuff,u point X to read buffer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 ldy #200 read up to 200 bytes
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 os9 I$ReadLn read it!
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 bcs L0035 branch if error
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 bsr srecords
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 bra L001F else exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 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
61 * bne L0049 exit if not
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 lda <filepath else get path
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 os9 I$Close and close it
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 bcs L0049 branch if error
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 * ldx <parmptr get param pointer
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 * lda ,x get char
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 * cmpa #C$CR end of command line?
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 * bne start branch if not
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 copytbl
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
71 lda #$17 lbra
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
72 sta $e400
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
73 leax Exit,pcr
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
74 leax -$e403,x
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
75 stx $e401
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 leax iotbl,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 leay iotblend,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 pshs x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 ldy #(iotblend-iotbl)
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 l1 ldb #$7e * JMP
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 stb ,u+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 ldd ,x++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 addb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 adca ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 std ,u++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 cmpx 2,s
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
87 ble l1
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 puls x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 jmp $400
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 Exit clrb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 os9 F$Exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 iotbl
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
95 fdb getchar-iotbl ; 0
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
96 fdb putchar-iotbl ; 3
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
97 fdb getline-iotbl ; 6
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
98 fdb putline-iotbl ; 9
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
99 fdb putcr-iotbl ; $C
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
100 fdb getpoll-iotbl ; $F
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
101 fdb xopenin-iotbl ; $12
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
102 fdb xopenout-iotbl ; $15
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
103 fdb xabortin-iotbl ; $18
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
104 fdb xclosein-iotbl ; $1B
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
105 fdb xcloseout-iotbl ; $21
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
106 fdb delay-iotbl ; $24
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
107 fdb noecho-iotbl ; $27
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 iotblend
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 L0049
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 err ldb #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 bra Exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 srecords
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 leax readbuff,u
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 clr <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 sline lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 cmpa #'S'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 bne slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 cmpa #'1'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 bne slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 subb #3
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 stb <bcount
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 stb <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 stb <adr+1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 lda <bcount
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 ldy <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 sbyte bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 stb ,y+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 deca
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 bgt sbyte
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 lda <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 cmpa #$ff
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 bne err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 gthex4 pshs d
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 stb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 puls d,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 gthex2 pshs b
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 addb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 addb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 stb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 puls b,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 gthex1 ldb ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 subb #'0'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 blo rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 cmpb #9
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 bls rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 subb #7
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 putchar * Output one character in B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 PSHS X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 BRA OUTCH1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 getchar * Input one character into B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 LDY #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 OS9 I$Read
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 BCS GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 putcr * Output a newline.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 LDB #C$CR
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 bsr putchar
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 LDB #C$LF
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 PSHS X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 OUTCH1 PSHS A,B
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 LDA #1
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$Write
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 getpoll
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 PSHS X,Y,D
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 LDB #SS.Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 OS9 I$GetStt
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 CMPB #$F6 Not Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 BNE RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 CLRB
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 ORCC #1 set carry to indicate ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 RNSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 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
212 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 GETLN0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 CLRA
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 TFR D,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 LDA <stdin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 OS9 I$ReadLn
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 BCS GETLN0
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
219 LEAY -1,Y
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
220 TFR Y,D
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 * LDA D,X
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 * CMPA #C$CR
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 * BNE GETLN1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 * LEAY -1,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 GETLN1 STY ,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 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
228 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 CLRA
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 TFR D,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 LDA <stdin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 OS9 I$WritLn
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 xopenin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 xopenout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 xabortin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 xclosein
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 xcloseout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 RTS
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
91
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
241 noecho LDA <stdin
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
242 CLRB
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
243 LDX <work
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
244 leax readbuff,X
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
245 OS9 I$GetStt
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
246 bcs err2
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
247 CLR IT.EKO,X
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
248 CLRB
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
249 OS9 I$SetStt
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
250 err2
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
251 RTS
1de7b2760b9d fix basic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 87
diff changeset
252
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 delay PSHS D,X * address **$21**
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 * 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
255 * ticks to wait. Each timer tick is 20ms
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 TFR D,X
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 OS9 F$Sleep
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 PULS D,X,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 emod
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 eom equ *
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 end