
Nasledujú ďalšie Basic programy pre počítač SBC6502. Prvý program je kratučký a prevádza dekadické čísla na ich hexa hodnoty. Druhý program je rozsiahlejší a prevádza hex-dec-hex konverziu. Tretí program dokáže vypočítať viacero paralelne radených odporov alebo viacero sériovo radených kapacít.
___________________________________________________________
Program pre prevod dec - hex:
2000 A$="0123456789ABCDEF"
2010 ? "(dec)";:INPUT N
2020 L=N AND 15:H=(N-L)/16
2030 ?"(hex): ";:? MID$(A$,H+1,1)MID$(A$,L+1,1)
2040 GOTO 2010
Komu sa to nechce "dlapať" - tak si to môže tu stiahnuť:

conv_dec_to_hex.txt (146,00 bytes)
______________________________________________________________________________
Program pre prevod hex-dec-hex:
(Tento si ale musíte "nadlapať" z priloženej predlohy sami ...)

Hex-dec-hex-conv.pdf (523,33 kb)
____________________________________________________
Program pre výpočet pre viacero paralelne radených odpororov, tak isto je to program pre sériovo radené kapacity, je to taká moja blbinka. Už som síce napísal programy pre 2 radené odpory a kondenzátory, ale toto umožňuje radiť a vypočítať väčší počet súčiastok v zapojení. Momentálne nastavený výpočet funguje v rozsahu 2÷10 radených odporov (alebo kapacít).
Táto horná hranica je daná iba kontrolou max. vstupnej hodnoty na riadku 204, ak tento riadok zrušíte tak sa rozsah zvýši - ale počítať už s takým veľkým počtom radených súčiastok fakt zaváňa psychiatriou ...
Uvedený program by mal bez problémov bežať aj na iných 8 bitových počítačov a na ich Basicu - akurát treba vynechať riadok č.10, ktorý je špecifický iba pre SBC6502 - maže sa ním obrazovka (? CHR$(12) - je to ekvivalent príkazu CLS a a príkaz POKE15,80 nastavuje výstup na hodnotu =80 znakov v riadku).
Listing programu:
6 REM Single Board Computer 6502
10 ? CHR$(12):POKE 15,80
11 CLEAR
12 ? " __________________________"
13 ? " Calculator for"
14 ? " x parallel resistor"
15 ? " or"
16 ? " x serial capacity
17 ? " (c) 2018 Igi"
18 ? " __________________________"
20 ?:? " R=to resist C=to capacity":?
40 ? " ";:INPUT A$
44 IF A$="R" THEN B$="parallel resist":C$="resistor no.":GOTO 100
48 IF A$="C" THEN B$="serial capacity":C$="capacity no.":GOTO 100
52 ? " R or C !"
55 GOTO 20
100 ?:? " Input=0=End !":?
200 ? " Number of ";:? B$
202 ? " Range (2-10) :";:INPUT I
204 IF I=1 OR I>10 THEN ? " Call your psychiatrist ...":END
205 IF I=0 THEN 500
210 T=T+1:IF T=I+1 THEN GOTO 11
211 IF T=1 THEN ? " Value:"
212 ? " ";:? C$;T;:INPUT W
215 IF T=1 THEN A=W:GOTO 210
217 IF T=2 THEN B=W:GOSUB 400:GOTO 210
218 IF T>=3 THEN A=Q
219 IF T>=3 THEN B=W:GOSUB 400:GOTO 210
220 STOP
400 REM -------------------------------
405 IF A=0 THEN 500
410 IF B=0 THEN 500
430 C=A*B:D=A+B:Q=(C/D)
445 IF T=I THEN ? "":? " Result=";:? Q:? " __________________________"
460 RETURN
500 ?:? " -- END program --":END
Výpočet prebieha postupne počas zadávania vstupných čísiel, nie až po načítaní všetkých hodnôt.
Potrebné je dodržať túto filozofiu - zadávanie hodnôt sa riadi najmenšou zadávanou hodnotou, potom pri výpočte nebude žiaden problém.
Príklady:
Potrebujeme vypočítať 3 paralelne zapojené odpory - 100Ω, 10kΩ a 100kΩ.
Zadáme číslo 1 - 100 (Ohm)
číslo 2 - 10000 (Ohm)
číslo 3 - 100000 (Ohm)
Čiže zadávame všetko v Ohm - výsledok bude v hodnotách Ohm.
Potrebujeme vypočítať 3 paralelne zapojené odpory - 10k, 27k, 3k3.
Zadáme číslo 1- 10
číslo 2 - 27
číslo 3 - 3.3
Zadávame v kOhm - výsledok bude potom v hodnotách kOhm.
Potrebujeme vypočítať 3 sériovo zapojené kondenzátory 6.8pF, 100pF a 1nF.
Zadáme číslo 1 - 6.8 (pF)
číslo 2 - 100 (pF)
číslo 3 - 1000 (pF)
Zadávame všetko v pF -výsledok bude v pF.
Analogicky to platí aj pre výpočty iných hodnôt, len si treba pri zadávaní uvedomiť aké hodnoty treba vkladať.
Teraz ešte vlastný program priamo na stiahnutie:

X-paralel resistor-serial-capacity_bas.txt (1,16 kb)
Jasne, dá sa to urobiť aj inak - a asi aj lepšie. Nie je tu nejaký rozpis prečo je to tu tak a tam tak, tento program nemá slúžiť na výuku. K takémuto výsledku som dospel pri jednej dlhej jesennej večeri na chalupe. Počíta to, dostanete správne výsledky a mňa baví že to beží na SBC6502. Zadanie nulovej hodnoty odporu alebo nulovej kapacity počas zadávania údajov má za následok okamžité ukončenie programu.
Ak chcete tento program vylepšiť, no problem !
Mimochodom - na riadok 220 by sa to v programe nemalo dostať ani náhodou, t.j. je možné ho zmazať. Len tam bol pri vývoji programu, potreboval som program v istej fázi stopnúť a skontrolovať si čo práve robil.
___________________________________________________________
Návrat do všetkých pokračovaní o SBC6502:
/igi/post/SBC6502-0-UvodIntroduction.aspx
____________________________________________________
Vaše hodnotenie, Rate post: