Utils 01

Zdrojový kód

1      5b00            *l
2      5b00            *a
3      5b00            *s
4      5b00             
5      5b00            ;Utils 01 - kadejake uzitocne programceky - (c) Busy soft & hard
6      5b00             
7      5b00                   org  #6000               Rozne tabulky:
8      6000            tabbod ds   #0400                - pre PLOT
9      6400            tabsin ds   #0100                - pre vypocet sinusu
10     6500            tabsnx ds   #0100                - pre vypocet sinusu presnejsi!
11     6600             
12     6600                   org  #8000               Priblizna kostra programu:
13     8000 f3         p      di                       Spustacia adresa
14     8001 cd8b81            call mkbod
15     8004 cd6380            call mksin               Inicializacie tabuliek
16     8007 cd8780            call mksinx
17     800a             
18     800a            ;...tu budu dake dalsie inicializacie, co je treba
19     800a             
20     800a fd213a5c   loop   ld   iy,#5c3a            Hlavna slucka programu
21     800e fb                ei
22     800f 76                hlt
23     8010 f3                di
24     8011             
25     8011            ;...tu bude samotne telo programu
26     8011             
27     8011 3efe              ld   a,#fe               test caps shiftu
28     8013 dbfe              in   a,(#fe)
29     8015 0f                rrca
30     8016 38f2              jr   c,loop
31     8018             
32     8018            ;...tu bude zakoncenie programu
33     8018             
34     8018 c3b3f4            jp   #f4b3               navrat do MRS
35     801b             
36     801b 210040     cls    ld   hl,#4000            zmazanie obrazovky
37     801e 110140            ld   de,#4001
38     8021 010018            ld   bc,#1800
39     8024 75                ld   (hl),l
40     8025 edb0              ldir
41     8027 01ff02            ld   bc,#02ff
42     802a 3607              ld   (hl),#07
43     802c edb0              ldir
44     802e c9                ret
45     802f             
46     802f            ;Matematicky koprocesor
47     802f             
48     802f 2e00       multi  ld   l,#00               hl=h*e
49     8031 55                ld   d,l
50     8032 29300119          dw   #3029,#1901
51     8036 29300119          dw   #3029,#1901
52     803a 29300119          dw   #3029,#1901
53     803e 29300119          dw   #3029,#1901
54     8042 29300119          dw   #3029,#1901
55     8046 29300119          dw   #3029,#1901
56     804a 29300119          dw   #3029,#1901
57     804e 29                add  hl,hl
58     804f d0                ret  nc
59     8050 19                add  hl,de
60     8051 c9                ret
61     8052             
62     8052 c640       cose   add  a,#40               h|l = cos(a)
63     8054 2665       sine   ld   h,>tabsnx           h|l = sin(a)
64     8056 6f                ld   l,a
65     8057 87                add  a,a
66     8058 9f                sbc  a,a
67     8059 6e                ld   l,(hl)
68     805a 67                ld   h,a
69     805b c9                ret
70     805c             
71     805c c640       cos    add  a,#40               a = cos(a)
72     805e 2664       sin    ld   h,>tabsin           a = sin(a)
73     8060 6f                ld   l,a
74     8061 7e                ld   a,(hl)
75     8062 c9                ret
76     8063             
77     8063 dd218064   mksin  ld   ix,tabsin+#80       Inicializacia
78     8067 fd210065          ld   iy,tabsin+#0100     klasickeho sinusu
79     806b 21a780            ld   hl,sintab
80     806e 0641              ld   b,#41
81     8070 7e         mks1   ld   a,(hl)
82     8071 dd7780            ld   (ix+#80),a
83     8074 fd7780            ld   (iy+#80),a
84     8077 ed44              neg
85     8079 dd7700            ld   (ix+#00),a
86     807c fd7700            ld   (iy+#00),a
87     807f 23                inc  hl
88     8080 dd23              inc  ix
89     8082 fd2b              dec  iy
90     8084 10ea              djnz mks1
91     8086 c9                ret
92     8087             
93     8087 dd21e880   mksinx ld   ix,snxtab           Inicializacia
94     808b 210065            ld   hl,tabsnx           rozsireneho sinusu
95     808e 118065            ld   de,tabsnx+#80
96     8091 0640              ld   b,#40
97     8093 dd7e00     mks1x  ld   a,(ix+#00)
98     8096 77                ld   (hl),a
99     8097 12                ld   (de),a
100    8098 1b                dec  de
101    8099 23                inc  hl
102    809a dd23              inc  ix
103    809c 10f5              djnz mks1x
104    809e 36ff              ld   (hl),#ff
105    80a0 0e80              ld   c,#80
106    80a2 68                ld   l,b
107    80a3 59                ld   e,c
108    80a4 edb0              ldir
109    80a6 c9                ret
110    80a7             
111    80a7 80838689   sintab dw   #8380,#8986         Tabulka sinusu
112    80ab 8c909396          dw   #908c,#9693         v predpetom formate
113    80af 999c9fa2          dw   #9c99,#a29f         (nula = 128)
114    80b3 a5a8abae          dw   #a8a5,#aeab         cos(x)=sin(x+64)
115    80b7 b1b3b6b9          dw   #b3b1,#b9b6
116    80bb bcbfc1c4          dw   #bfbc,#c4c1
117    80bf c7c9ccce          dw   #c9c7,#cecc
118    80c3 d1d3d5d8          dw   #d3d1,#d8d5
119    80c7 dadcdee0          dw   #dcda,#e0de
120    80cb e2e4e6e8          dw   #e4e2,#e8e6
121    80cf eaebedef          dw   #ebea,#efed
122    80d3 f0f1f3f4          dw   #f1f0,#f4f3
123    80d7 f5f6f8f9          dw   #f6f5,#f9f8
124    80db fafafbfc          dw   #fafa,#fcfb
125    80df fdfdfefe          dw   #fdfd,#fefe
126    80e3 feffffff          dw   #fffe,#ffff
127    80e7 ff                db   #ff
128    80e8             
129    80e8 00060d13   snxtab dw   #0600,#130d         Tabulka sinusu
130    80ec 191f252c          dw   #1f19,#2c25         (absolutne hodnoty)
131    80f0 32383e44          dw   #3832,#443e         (znamienko = 7 bit adresy)
132    80f4 4a50565c          dw   #504a,#5c56         cos x = sin (x+64)
133    80f8 62676d73          dw   #6762,#736d
134    80fc 787e8388          dw   #7e78,#8883
135    8100 8e93989d          dw   #938e,#9d98
136    8104 a2a7abb0          dw   #a7a2,#b0ab
137    8108 b4b9bdc1          dw   #b9b4,#c1bd
138    810c c5c9cdd0          dw   #c9c5,#d0cd
139    8110 d4d7dbde          dw   #d7d4,#dedb
140    8114 e1e4e7e9          dw   #e4e1,#e9e7
141    8118 eceef0f2          dw   #eeec,#f2f0
142    811c f4f6f7f9          dw   #f6f4,#f9f7
143    8120 fafbfcfd          dw   #fbfa,#fdfc
144    8124 fefeffff          dw   #fefe,#ffff
145    8128             
146    8128            rnd
147    8128 3e55       rr2    ld   a,#55               Generator
148    812a 67                ld   h,a                 nahodnych
149    812b 87                add  a,a                 cisel
150    812c 87                add  a,a                 vystup v registri a
151    812d 84                add  a,h
152    812e c607              add  a,#07
153    8130 322981            ld   (rr2+1),a
154    8133 6f                ld   l,a
155    8134 ed5f              ld   a,r
156    8136 ad                xor  l
157    8137 210000     rr3    ld   hl,#00
158    813a ae                xor  (hl)
159    813b 23                inc  hl
160    813c cb54              bit  2,h
161    813e 2803              jr   z,rr1
162    8140 213300            ld   hl,#33
163    8143 223881     rr1    ld   (rr3+1),hl
164    8146 c9                ret
165    8147             
166    8147 7a         minus  ld   a,d                 h|l = h|l-d|e
167    8148 2f                cpl
168    8149 57                ld   d,a
169    814a 7c         plus   ld   a,h                 h|l = h|l+d|e
170    814b ba                cp   d
171    814c 2809              jr   z,pls1
172    814e 7d                ld   a,l
173    814f bb                cp   e
174    8150 3002              jr   nc,#02
175    8152 eb                ex   de,hl
176    8153 7d                ld   a,l                 l>e
177    8154 93                sub  e
178    8155 6f                ld   l,a
179    8156 c9                ret
180    8157 7d         pls1   ld   a,l
181    8158 83                add  a,e
182    8159 6f                ld   l,a
183    815a c9                ret
184    815b             
185    815b 7a         krat   ld   a,d                 h|l = h|l*d|e
186    815c ac                xor  h                   h,d = znamienka
187    815d 4f                ld   c,a                 l,e = hodnoty
188    815e 65                ld   h,l
189    815f cd2f80            call multi
190    8162 6c                ld   l,h
191    8163 61                ld   h,c
192    8164 c9                ret
193    8165             
194    8165 d680       real   sub  #80                 Prevod a -> h|l
195    8167 87                add  a,a
196    8168 6f                ld   l,a
197    8169 9f                sbc  a,a
198    816a 67                ld   h,a
199    816b d0                ret  nc
200    816c 7d                ld   a,l
201    816d 2f                cpl
202    816e 6f                ld   l,a
203    816f c9                ret
204    8170             
205    8170 cb3d       int    srl  l                   Prevod h|l -> a
206    8172 af                xor  a
207    8173 ac                xor  h
208    8174 7d                ld   a,l
209    8175 2802              jr   z,#02
210    8177 ed44              neg
211    8179 c680              add  a,#80
212    817b c9                ret
213    817c             
214    817c            ;Graficky koprocesor
215    817c             
216    817c 2660       plot   ld   h,>tabbod           83 cyklov !!!
217    817e 68                ld   l,b                 Vstup:
218    817f 56                ld   d,(hl)              b=y,c=x
219    8180 24                inc  h
220    8181 7e                ld   a,(hl)
221    8182 24                inc  h
222    8183 69                ld   l,c
223    8184 b6                or   (hl)
224    8185 5f                ld   e,a
225    8186 24                inc  h
226    8187 1a                ld   a,(de)
227    8188 b6                or   (hl)                xor or
228    8189 12                ld   (de),a
229    818a c9                ret                      10+49+24
230    818b             
231    818b dd210061   mkbod  ld   ix,tabbod+#0100     Vypocet tabulky
232    818f 210040            ld   hl,#4000            pre PLOT
233    8192 dd25       mkb1   dec  xh
234    8194 dd7400            ld   (ix+#00),h
235    8197 dd24              inc  xh
236    8199 dd7500            ld   (ix+#00),l
237    819c cdd181            call dole
238    819f 7c                ld   a,h
239    81a0 fe58              cp   #58
240    81a2 3803              jr   c,#03
241    81a4 21ff5f            ld   hl,#5fff
242    81a7 dd2c              inc  xl
243    81a9 20e7              jr   nz,mkb1
244    81ab dd24              inc  xh
245    81ad dd7d       mkb2   ld   a,xl
246    81af 0f                rrca
247    81b0 0f                rrca
248    81b1 0f                rrca
249    81b2 e61f              and  #1f
250    81b4 dd7700            ld   (ix+#00),a
251    81b7 dd7d              ld   a,xl
252    81b9 2f                cpl
253    81ba 87                add  a,a
254    81bb 87                add  a,a
255    81bc 87                add  a,a
256    81bd f6c7              or   #c7
257    81bf 32c481            ld   (set1+1),a
258    81c2 af                xor  a
259    81c3 cbcf       set1   set  1,a
260    81c5 dd24              inc  xh
261    81c7 dd7700            ld   (ix+#00),a
262    81ca dd25              dec  xh
263    81cc dd2c              inc  xl
264    81ce 20dd              jr   nz,mkb2
265    81d0 c9                ret
266    81d1             
267    81d1 24         dole   inc  h                   Vypocita adresu
268    81d2 7c                ld   a,h                 bajtu vo videram
269    81d3 e607              and  #07                 o jeden mikroriadok nizsie
270    81d5 c0                ret  nz
271    81d6 3e20              ld   a,#20
272    81d8 85                add  a,l
273    81d9 6f                ld   l,a
274    81da d8                ret  c
275    81db 3ef8              ld   a,#f8
276    81dd 84                add  a,h
277    81de 67                ld   h,a
278    81df c9                ret

 cls    801b  *  cos    805c  *  cose   8052  *  dole   81d1  *
 int    8170  *  krat   815b  *  loop   800a  *  minus  8147  *
 mkb1   8192  *  mkb2   81ad  *  mkbod  818b  *  mks1   8070  *
 mks1x  8093  *  mksin  8063  *  mksinx 8087  *  multi  802f  *
 p      8000  *  plot   817c  *  pls1   8157  *  plus   814a  *
 real   8165  *  rnd    8128  *  rr1    8143  *  rr2    8128  *
 rr3    8137  *  set1   81c3  *  sin    805e  *  sine   8054  *
 sintab 80a7  *  snxtab 80e8  *  tabbod 6000  *  tabsin 6400  *
 tabsnx 6500  *                                                

Bytes:480  labels:33  errors:0




Popis
Kadejake uzitocne programceky

Poznámky
Pozor ! V tomto příspěvku je povícero zajímavých rutinek ! Jen co bude čas, tak se to pokusím roztřídit a zařadit do přesnějších kategorií (dron)

Poslal
Busy soft & hard