SBC6502 - 17 - software. Basic programs.

By Administrator at novembra 05, 2018 18:40
Filed Under: SBC6502

 

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:

(Ten si ale musíte "nadlapať" z 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. 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 to už s takým veľkým počtom radených súčiastok fakt zaváňa psychiatriou ...


Uvedený program by mal bez nejakých zásadných 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.

 

Teraz ešte program na stiahnutie:

X-paralel resistor-serial-capacity_bas.txt (1,16 kb)


Jasne že sa to dá urobiť aj inak - a  asi aj lepšie. Nie je tu nejaký rozpis prečo je tu to tak a 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 priame 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ť.

___________________________________________________________

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/SBC6502-0-UvodIntroduction.aspx

____________________________________________________

Vaše hodnotenie, Rate post:

Comments

5. 11. 2018 18:46:29 #

trackback

11_2018 Blog, Notes.

11_2018 Blog, Notes.

Igi blog | Reply

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading