annotate src/os9/level2/cmds/sbc09.asm @ 87:60e629904ad6

forth worked
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 20 Aug 2018 10:44:21 +0900
parents 4967d1acd34a
children 1de7b2760b9d
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
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
69 lda #$17 lbra
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
70 sta $e400
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
71 leax Exit,pcr
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
72 leax -$e403,x
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
73 stx $e401
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 leax iotbl,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 leay iotblend,pcr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 pshs x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 ldy #(iotblend-iotbl)
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 l1 ldb #$7e * JMP
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 stb ,u+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 ldd ,x++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 addb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 adca ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 std ,u++
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 cmpx 2,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 bne l1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 puls x,y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 jmp $400
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 Exit clrb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 os9 F$Exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 fdb getchar-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 fdb putchar-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 fdb getline-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 fdb putline-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 fdb putcr-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 fdb getpoll-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 fdb xopenin-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 fdb xopenout-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 fdb xabortin-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 fdb xclosein-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 fdb xcloseout-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 fdb delay-iotbl
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 iotblend
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 L0049
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 err ldb #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 bra Exit
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 srecords
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 leax readbuff,u
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 clr <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 sline lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 cmpa #'S'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 bne slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 lda ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 cmpa #'1'
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 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 subb #3
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 stb <bcount
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 stb <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 stb <adr+1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 lda <bcount
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 ldy <adr
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 sbyte bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 stb ,y+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 deca
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 bgt sbyte
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 slast
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 lda <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 cmpa #$ff
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 bne err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 err1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 gthex4 pshs d
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 bsr gthex2
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 stb 1,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 puls d,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 gthex2 pshs b
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 aslb
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 aslb
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 stb ,s
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 bsr gthex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 addb ,s
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 addb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 stb <chksum
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 puls b,pc
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 gthex1 ldb ,x+
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 subb #'0'
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 blo rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 cmpb #9
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 bls rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 subb #7
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 rgethex1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 rts
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 putchar * Output one character in B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 PSHS X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 BRA OUTCH1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 getchar * Input one character into B register.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 LDY #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 OS9 I$Read
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 BCS GETCH0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 putcr * Output a newline.
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 LDB #C$CR
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 bsr putchar
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 LDB #C$LF
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 OUTCH1 PSHS A,B
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 LEAX 1,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 LDA #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 LDY #1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 OS9 I$Write
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 getpoll
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 PSHS X,Y,D
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 LDA #0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 LDB #SS.Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 OS9 I$GetStt
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 CMPB #$F6 Not Ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 BNE RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 CLRB
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 RSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 ORCC #1 set carry to indicate ready
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 RNSENSE
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 PULS X,Y,D,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 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
209 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 GETLN0
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 CLRA
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 TFR D,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 LDA <stdin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 OS9 I$ReadLn
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 BCS GETLN0
87
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
216 LEAY -1,Y
60e629904ad6 forth worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
217 TFR Y,D
86
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 * LDA D,X
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 * CMPA #C$CR
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 * BNE GETLN1
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 * LEAY -1,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 GETLN1 STY ,S
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 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
225 PSHS A,B,X,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 CLRA
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 TFR D,Y
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 LDA <stdin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 OS9 I$WritLn
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 PULS A,B,X,Y,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 xopenin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 xopenout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 xabortin
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 xclosein
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 xcloseout
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 RTS
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 delay PSHS D,X * address **$21**
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 * 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
240 * ticks to wait. Each timer tick is 20ms
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 TFR D,X
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 OS9 F$Sleep
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 PULS D,X,PC
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 emod
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 eom equ *
4967d1acd34a add sbc09.asm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 end