annotate src/os9/level2/cmds/sbc09.asm @ 86:4967d1acd34a

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