Šta je novo?

Tim 011

I da dodam još jedno zapažanje o fontovima. Naime, njihovo kodiranje, tj. njihova definicija je sledeća.

Jedan bajt sadrži stanje gornjeg reda karaktera, sledeći bajt sadrži stanje sledećeg reda (istog) karaktera, itd. Ne mogu da se setim koliko je karakter "visok" (u pikselima), ali se odlično sećam da je svaki znak širok pet piksela. Pri tome, znak zauzima pet bitova veće težine, tj. bitske pozicije b7 do b3, gde je b7 MSB, a b3 LSB. Pored toga, implicitno se koristi i bitska pozicija b2, kojom je određen razmak između znakova na ekranu -- on očigledno iznosi samo jedan piksel. Naravno, kodiranje je logično: gde je bit jednak nuli, piksel je "ugašen"; gde je bit jednak jedinici, piksel je "upaljen" ;)

Bitske pozicije b1 i b0, koliko znam, ne koriste se.
 
Da ovo ne bi bilo samo teoretisanje, evo i nekih mojih kodova od pre mnogo godina ;)

Najpre ide potprogram za crtanje jednog jedinog piksela:

Kod:
PLOT1.Z80
; crta tacku 
; tacka (0,0) je u gornjem levom uglu ekrana 
; ulaz: 
;    c - y koordinata (0-255) 
;    a - bitovi 0-7 x koordinate 
;    cf - 8. bit x koordinate 
;    d - boja (0-3) 
; izlazno stanje registara: 
;    d,c nepromenjeni 
;    e=0 
;    a ima vrednost kao posle in a,(c) 
;    b - 7. bit je 1, bitovi 6-0 su visih 7 bitova x koord. 
;    statusni reg.: z=1, ostali flegovi nedefinisani 
 
  
plot1    push af 
    and 3 
    ld e,a 
    inc e 
    pop af 
    rra 
    rra 
    or 128 
    ld b,a 
    in a,(c) 
    push de 
plot2    dec e 
    jr z,plot5 
    rrca 
    rrca 
    jr plot2 
plot5    and 252 
    or d 
    pop de 
plot4    dec e 
    jr z,plot3 
    rlca 
    rlca 
    jr plot4 
plot3    out (c),a 
    ret
 
Često je potrebno iscrtati "kvadratić" umesto tačke, pa sam i za to napravio poseban potprogram, koji je svakako brži od iscrtavanja piksel-po piksel. Dakle, u nastavku poruke je kod koji crta "tačku" dimenzije 8 * 8 piksela:

Kod:
PLT.Z80

plt    ld b,h            ; Ulaz:     h-x koord. (0-63)
    ld c,128        ;     l-y koord. (0-31)
    mlt bc            ;     e-"boja" (0-255)
    ld d,l            ;
    ld h,b            ; Kvari: af, bc, hl, d
    ld l,c            ; Crta tacku velicine 8*8 piksela.
    add hl,hl        ; Koristi Hitacijeve mnemonike.
    add hl,hl
    sla d
    sla d
    sla d
    ld c,d
    ld b,0
    add hl,bc
    ld bc,08000h
    ld a,2
lab    push af
    add hl,bc
    ld b,h
    ld c,l
    ld a,7
loop    out (c),e
    inc bc
    dec a
    jr nz,loop
    out (c),e
    ld hl,249
    inc d
    pop af
    dec a
    jr nz,lab
    ret

Naravno, ako ovaj kod asemblirate, morate na početku koda staviti direktivu
Kod:
.hd64

Naime, kod koristi naredbu MLT za neoznačeno množenje dva osmobitna broja, koja ne postoji kod Z80, pa da bi radilo na HD64180, mora da se doda ta direktiva.
 
Da ovo ne bi bilo samo teoretisanje, evo i nekih mojih kodova od pre mnogo godina ;)

Najpre ide potprogram za crtanje jednog jedinog piksela:
Kad uhvatim vremena, prilagodiću ovaj kod MESCC kompajleru, pa uporediti sa brzinom ostalih rutina za iscrtavanje piksela. Onda ću u TIMGRAPH biblioteku ubacti najbržu :)
 
Ne znam koliko vam je ovo korisno, ali neko je danas okačio BSD-C arhivu sa izvornim kodom. Prema tekstu u opisu, u pitanju su komercijalne verzije BSD-C za CP/M koje je autor objavio u javni domen 2002. godine. U arhivi se takođe nalazi izvorni kod. Da li je kompletan ili ne, nisam proveravao.


Izmena:
Ovo je izgleda preuzeto sa autorove web strane koja se nalazi ovde:


Izmena 2:

Pored samih kompajlera i izvornog koda, gore linkovana autorova strana sadrži i dokumentaciju i korisne linkove.
 
Elem, evo i malo muzike ;) Sa tri oktave raspona u dve prilično slične boje tona ne može se postići bogzna šta, ali se ja nisam predavao ;) Drugarica iz odeljenja, Izabela J, koja je paralelno sa MG-om završila i srednju muzičku školu, donese jedan dan u MG neki svoj udžbenik iz kontrapunkta. Budući da me je muzička teorija znatno privlačila, ja na predlog Izabele odem u biblioteku i nađem predloženi mi udžbenik. E, sad... Bilo je to preambiciozno za moje ipak nedovoljno muzičko predznanje, ali sam ipak definitivno odustao kod rečenice: "Sve ove primere obavezno i otpevati, a ne samo odsvirati!" :) (Naravno, kada je reč o kontrapunktu, neophodan je najmanje još jedan "glas" -- ponajbolje četiri -- tako da sam tu malo posustao sa učenjem...).

Ali nisam skroz digao ruke: pošto vidite kakav sam haker bio ;) a moj verni MSX Canon V-20 nešto nije bio ispravan tih dana, napisao sam tri programa koji sviraju tri primera iz pomenute knjige. Meni su se dopali, a ostavljam vam ih i vama na procenu :) Ako bi neko mogao da izvuče WAV, bilo bi to super, da se malo podsetim kontrapunkta :)

Kodovi slede...
DOUBLE1.BAS
Kod:
10 DIM A1(28),B1(28),A2(22),B2(22) 
20 X=17 
25 Y=3 
30 FOR I=1 TO 28: READ A1(I),B1(I): B1(I)=B1(I)*Y: NEXT I 
40 FOR I=1 TO 22: READ A2(I),B2(I): B2(I)=B2(I)*Y: NEXT I 
50 PC1=1: PC2=1 
60 WHILE PC1<=28 
70 SOUND A1(PC1),X: SOUND A2(PC2),X 
80 B1(PC1)=B1(PC1)-1 
90 IF B1(PC1)=0 THEN PC1=PC1+1 
100 B2(PC2)=B2(PC2)-1 
110 IF B2(PC2)=0 THEN PC2=PC2+1 
120 WEND 
130 END 
200 DATA 21,12,19,2,21,2,23,4,26,6,25,2,26,8,25,2,23,2,25,4,30,8,28,2,26,2,25,2,23,2,21,2,23,2,25,4,23,2,21,2,23,4,28,6,26,2,26,6,25,1,23,1,25,4,26,16 
210 DATA 14,8,18,4,16,4,14,6,11,1,14,1,16,4,18,4,19,4,16,4,21,8,19,8,16,4,18,2,19,2,21,12,19,4,18,4,16,2,14,2,16,8,14,16 
,16 
210 DATA 14,8,18,4,16,4,14,6,11,1,14,1,16,4,18,4,19,4,16,4,21,8,19,8,16,4,18,2,19,2,21,12,19,4,18,4,16,2,14,2,16,8,1
DOUBLE2.BAS
Kod:
10 DIM A1(29),B1(29),A2(31),B2(31) 
20 X=17 
25 Y=3 
30 FOR I=1 TO 29: READ A1(I),B1(I): B1(I)=B1(I)*Y: NEXT I 
40 FOR I=1 TO 31: READ A2(I),B2(I): B2(I)=B2(I)*Y: NEXT I 
50 PC1=1: PC2=1 
60 WHILE PC1<=29 
70 SOUND A1(PC1),X: SOUND A2(PC2),X 
80 B1(PC1)=B1(PC1)-1 
90 IF B1(PC1)=0 THEN PC1=PC1+1 
100 B2(PC2)=B2(PC2)-1 
110 IF B2(PC2)=0 THEN PC2=PC2+1 
120 WEND 
130 END 
200 DATA 18,24,16,4,14,8,13,2,11,2,13,4,14,4,19,12,18,4,16,6,14,2,16,2,18,2,19,2,21,2,23,8,21,4,19,2,18,2,16,4,21,6,19,2,16,2,18,2,19,8,21,4,18,4,19,16,18,16 
210 DATA 6,8,11,8,7,12,6,2,7,2,9,8,4,4,6,8,4,4,9,6,7,1,6,1,7,12,4,2,6,2,7,2,9,2,11,2,16,2,14,12,13,2,11,2,13,6,14,2,16,4,11,4,18,12,16,2,14,2,16,8,18,16 
7,2,9,8,4,4,6,8,4,4,9,6,7,1,6,1,7,12,4,2,6,2,7,2,9,2,11,2,16,2,14,12,13,2,11,2,13,
DOUBLE3.BAS
Kod:
10 DIM A1(33),B1(33),A2(24),B2(24) 
20 X=17 
25 Y=3 
30 FOR I=1 TO 33: READ A1(I),B1(I): B1(I)=B1(I)*Y: NEXT I 
40 FOR I=1 TO 24: READ A2(I),B2(I): B2(I)=B2(I)*Y: NEXT I 
50 PC1=1: PC2=1 
60 WHILE PC1<=33 
70 SOUND A1(PC1),X: SOUND A2(PC2),X 
80 B1(PC1)=B1(PC1)-1 
90 IF B1(PC1)=0 THEN PC1=PC1+1 
100 B2(PC2)=B2(PC2)-1 
110 IF B2(PC2)=0 THEN PC2=PC2+1 
120 WEND 
130 END 
200 DATA 1,4,9,4,16,8,14,2,12,2,11,4,12,2,11,2,9,2,11,2,12,2,14,2,16,4,18,2,16,2,18,2,19,2,21,2,16,2,21,12,19,2,18,2,14,2,16,2,18,4,16,4,14,4,12,6,11,2,12,2,9,2,11,12,9,12 
210 DATA 9,8,7,4,5,8,7,2,5,2,4,4,12,6,11,2,9,4,14,8,12,6,11,2,9,4,11,12,9,4,7,2,9,2,11,6,4,2,9,12,8,2,6,2,8,4,9,12
 
Poslednja izmena:
Još jedna "prava stvar": software za učitavanje fontova sa francuskim specifičnim simbolima. Pričao sam o tom programu na prethodnoj stranici, pa ću ovde samo ukratko reći da je napravljen praktično po narudžbi (besplatnoj), i da mu je mana što ne reaguje na stanje Caps Locka. Trebalo je da prihvatim sugestiju drugara koji mi je predložio da patchujem CIR.COM, LAT.COM I ASC.COM, ali -- jok, to mi je bilo ispod časti ;) A, s druge strane, problem Caps Locka nisam na vreme primetio...

Bilo kako bilo, kod sledi. Ako ga analizirate, možete videti da je ime autora XOR-ovanjem zaštićeno od heksadekadnog editora DU3 :)



Kod:
FRENCH.Z80

    di
    ld hl,lab1
    ld (point1),hl
    ld hl,lab2
    ld (point2),hl
    ld b,10
lab    push bc
    ld hl,(0e80fh)
    ld d,h
    ld e,l
    ld hl,(point1)
    ld c,(hl)
    inc hl
    ld b,(hl)
    ld h,b
    ld l,c
    add hl,de
    ld d,h
    ld e,l
    ld hl,(point2)
    ld bc,10
    ldir
    ld hl,(point1)
    inc hl
    inc hl
    ld (point1),hl
    ld hl,(point2)
    ld bc,10
    add hl,bc
    ld (point2),hl
    pop bc
    djnz lab
    ld de,text
imajos    ld a,(de)
    xor 55
    ld (de),a
    inc de
    cp '$'
    jr nz,imajos
    ld de,text
    ld c,09h
    call 05h
    ei
    ret
point1    dw 0
point2    dw 0
text    db 113,101,114,121,116,127,27,23,97,82,69,68,94,88,89
    db 23,6,25,7,27,58,61,62,11,116,9,23,6,14,15,14,23,85,78
    db 23,126,65,86,89,23,100,67,86,90,82,89,92,88,65,94,84
    db 27,23,122,25,112,25,23,21,97,82,91,93,92,88,23,97,91
    dâ 86,95,88,65,94,84,21,25,19
lab1    dw 0140h,024eh,0258h,0262h,026ch
    dw 0280h,038eh,0398h,03a2h,03ach
lab2    db 000h,020h,050h,070h,088h,0f8h,080h,070h,000h,000h
    db 000h,040h,020h,070h,008h,078h,088h,078h,000h,000h
    db 000h,000h,000h,070h,088h,080h,080h,078h,020h,020h
    db 000h,010h,020h,070h,088h,0f8h,080h,070h,000h,000h
    db 000h,040h,020h,070h,088h,0f8h,080h,070h,000h,000h

    db 020h,050h,0f8h,080h,080h,0f0h,080h,0f8h,000h,000h
    db 040h,020h,070h,088h,0f8h,088h,088h,088h,000h,000h
    db 000h,070h,088h,080h,080h,080h,088h,070h,020h,020h
    db 010h,020h,0f8h,080h,080h,0f0h,080h,0f8h,000h,000h
    db 040h,020h,0f8h,080h,080h,0f0h,080h,0f8h,000h,000h


Moguća je greška u kodu u redu neposredno iznad labele lab1: izgleda da je prilikom prebacivanja sa Tima na PC direktiva db zamenjena pogrešnom, dâ, samo nisam u prilici da to i proverim...

Nego, da li neko pravi neki repozitorijum softvera za Tima? Da li ima zainteresovanih za ove kodove što postavih?
 
Nego, da li neko pravi neki repozitorijum softvera za Tima? Da li ima zainteresovanih za ove kodove što postavih?
Mogu postaviti sve tvoje programe na moj tim-011 repozitorijum ako se slažeš. Još uvek nisam stigao da odem do Marka da ovo i isprobamo, zezala me neka prehlada/grip skoro 3 nedelje...
 
Mogu postaviti sve tvoje programe na moj tim-011 repozitorijum ako se slažeš. Još uvek nisam stigao da odem do Marka da ovo i isprobamo, zezala me neka prehlada/grip skoro 3 nedelje...

Naravno da se slažem, ali tek kada se potpuno oporaviš :) Možeš da kačiš sve sem onoga što sam ti poslao mailom; još sam u fazi doterivanja dokumentacije, koja je, izgleda mi, neophodna...
 
Nešto nije u redu sa forumom. Već nekoliko dana šaljem jednu (skoro) istu poruku, ali sistem nikako da je prihvati. Da nije problem u CODE tagovima? Imam da dodam nekoliko redova programa.

Ne uspevam nikako :(
 
Nešto nije u redu sa forumom. Već nekoliko dana šaljem jednu (skoro) istu poruku, ali sistem nikako da je prihvati. Da nije problem u CODE tagovima? Imam da dodam nekoliko redova programa.

Ne uspevam nikako :(
Ako hoćeš, pošalji mi na mail, pa mogu da parobam da postavim, da vidimo da li je do tvog naloga ili do foruma.
 
Procedure koje je @istameni pokušao da postavi, pa mu nije uspelo,ne uspeva ni meni...1633849613594.png
Ovom novom forumu se nešto jako ne sviđa u tih 5-6 linija teksta i nikako neće da ih primi, bez obizira da li stavim ili ne CODE tag. Baš glupo...
Elem, evo ih kao sličica, stvarno su kratke:
1633849797034.png
 
Napomenuo bih (sedmi put) da rade sličnu stvar kao i istoimene procedure u Trubo Pascalu sa Hercules grafičkom kartom i odgovarajućim monitorom ;) Najbolje je isprobati ih u praksi, pa videti kako funkcionišu.

Jedna od mogućih primena je za razne vrste menija, otprilike kao što je to nekada bilo u DOS-u.
 
Napomenuo bih (sedmi put) da rade sličnu stvar kao i istoimene procedure u Trubo Pascalu sa Hercules grafičkom kartom i odgovarajućim monitorom ;) Najbolje je isprobati ih u praksi, pa videti kako funkcionišu.

Za one koji nisu na ti sa Turbo Pascalom:
HighVideo i LowVideo su vezani za intezitet boja. Tj. prevode boje 0 do 7 u boje 8 do 15 (i obrnuto). U slučaju monohromatskog prikaza to bi verovatno bilo varijacija između sive i crne boje.
Ako je moguće postaviti "boju" i pozadine i teksta, onda se može postići efekat menija. :)
 
Poslednja izmena:
Dopuna:
pogotovo ako je moguće prikazati 4 nijanse boja (crna, bela i dve nijanse sive). :)
 
Nego, je l' mrdnuo neko nešto od ovog wareza što okačih? Sa ove vremenske distance baš me zanima da se prisetim kako to fukcioniše :)
 
Nego, je l' mrdnuo neko nešto od ovog wareza što okačih? Sa ove vremenske distance baš me zanima da se prisetim kako to fukcioniše :)
Ja iskreno nisam, nije mi se dalo. Moj TIM-011 je kod prijatelja i dok se ne preselim, tako će i da ostane. S druge strane, otkad je počelo sve ovo sa virusom ne idem često kod njega, a i kada odem onda uglavnom pričamo, pa čačkanje TIM-a nije stiglo na red. Ako sve bude kako treba, negde do septembra bi trebalo da imam svoju retro sobu, pa ako ne pre, tada. Žao mi je što je ovako, ali zasad tu ne mogu puno da uradim.
 
Nešto sam pretraživao forum i našao sam temu iz 2010. u kojoj je @demerzel postavio na 4Shared gomilu stvari za Tim011. Deluje da je ovo slično onome što je Mare postavio u ranom delu ove teme, ali pošto link još uvek funkcioniše rekoh da ga postavim za evidenciju.
Dosta odatle i još dosta novog je postavljeno i na:
 
Fajl TIM-RACUNARI-SK.pdf sadrži većinu tekstova, ali je mala rezolucija i ne sadrži tekst članaka (OCR).

Postavio sam nekoliko demerzelovih skenova na Internet Arhivu:

IA radi automatski OCR i konverziju u PDF.

Postupak:
  • Skenirati strane časopisa/knjige u odvojene fajlove u JPG ili PNG formatu.
  • Zipovati sve slike u ZIP arhivu.
  • Preimenovati ZIP fajl u CBZ (zipovane slike - format koji se obično koristi za stripove).
  • Dodati u Internet Arhivu.
  • Pri dodavanju, ako je tekst na latinici, privremeno postavite jezik na hrvatski (ne podržavaju srpsku latinicu).
  • Nakon što je fajl dodat, postaviti jezik na "scc" (srpski).
Za OCR koriste Tesseract OCR koji ima vrlo solidne rezultate. Dobijeni PDF sadrži sav prepoznat tekst pa se iz njega može kopirati u druge aplikacije.

Inače, Tesseract ima podršku za srpsku latinicu. Podrška fali u web aplikaciji Internet Arhive.

Nažalost, TIM-RACUNARI-SK.pdf je verovatno preslabe rezolucije pa ne verujem da će OCR biti uspešan.
 
Vezano za TIM-RACUNARI-SK.pdf. Ekstrakovao sam slike sa alatkom pdfimages koja dolazi uz Poppler. Ekstraktovane slike su solidne rezolucije, ali je tekst umrljan:
tim011.png
Napravio sam test unos na Internet Arhivi, ali ne očekujem mnogo. :)

Slike koje su u boji su mnogo boljeg kvaiteta.
tim011_2.png

Crno-bele slike su isto "umrljane" na sličan način kao tekst.
tim011-016.png

Ali tekst izgleda čitljivo kad je prikazan u niskoj rezoluciji:
Слика радне површи_2022-02-15_15-02-33.png
Tako da je izlaz komande pdfimages izgleda samo "razvukao" tekst manje rezolucije.
Btw, odradio sam esktrakciju slika i za Priručnik Zorana Mičića koji sam prebacio u CBZ i dodao u IA. Rezultujući PDF je samo 2,8 MB težak, a sadrži i prepoznati tekst:

OCR kvalitet uvek može da se proveri u TXT datoteci koja je takođe automatski generisana. Ovde je odrađen prilično solidan posao. Primer prepoznatog teksta:
UKLJUČIVANJE RACUNARA


Na zadnjoj ploči računara se nalazi priključak za mrežni kabal i
u njega treba uključiti kabal koji ste dobili uz računar.Petopolni
priključak kabla tastature treba uključiti u konektor sa oznakom K1,
koji se takodje nalazi sa zadnje strane računara.


Ukoliko imate štampač,priključite ga na konektor K3.
Kada ste sve ovo uradili,ubacite sistemsku disketu koju ste dobili uz
računar u otvor disk jedinice koja se nalazi sa prednje strane
računara.


Obratite pažnju šta je prednja strana diskete.Gledano sa gornje
strane,u levom gornjem uglu diskete se nalazi utisnuta strelica.

Disketu treba lagano gurnuti u otvor disk jedinice u pravcu
pokazivanja strelice.

Ukoliko uz primenu sile ugurate disketu naopako,doći će do
lomljenja glava u disk jedinici i time će računar biti onesposobljen
za upotrebu.
Ili primer komandi:
Primer
A>DIR<RET>
A>M:<RET> (prelazak na RAM-disk)
M>DIR<RET>
M>A:<RET> (povratak na osnovni direktorijum)
 
Poslednja izmena:
Ispalo je da sam bio u krivu. Tekst iz TIM-RACUNARI-SK.pdf je sasvim solidno prepoznat:
Sada na scenu stupaju ZCPR3
(Z80 Command Processor Repiace-
ment) i ZADOS (Z80 Replacement
for BDOS). Ono što se odmah vidi
je da je kod pisan za Z80 (odnosno
Hitachi). čime je na istom prostoru
stalo više koda, koji se pri tom i
brže izvršava. Ono što se ne vidi je
da je osim osnovne sličnosti neop-
hodne da se obezbedi kompatibil-
nost. ostalo vrlo malo zajedničkog
sa CP/M-om. ZCPR3 je potpuno:
modularno koncipiran, tako da ko-
risnik praktično može da konfiguri-
še | generiše sistem prema svojim
potrebama. Što je još interesantni-
je. važniji deo rekonfiguracije može
se izvoditi dinamički, tj. u toku
rada.

Mada nisam kontrolisao ceo tekst.

Uz ovu poruku sam okačio generisani pdf sa prepoznatim tekstom i prepoznati tekst u txt formatu.

Obrisaću unos na IA pa ću ga ponovo okačiti kasnije.
 

Prilozi

  • tim-racunari-sk.pdf
    3.4 MB · Pregleda: 5
  • tim-racunari-sk.txt
    228.2 KB · Pregleda: 7
Za TIM-RACUNARI-SK.pdf nisam imao stranice skenirane u iole većoj rezoluciji, manje-više one sa retrospec sajta. Sve sam provukao kroz Scan Tailor, ali očigledno nisam proveo dovoljno vremena podešavajući obradu skeniranih stranica (mada, ne znam koliko uopšte može bolje kada je početna rezolucija prilično niska). Ako se dokopam boljih skenova samih stranica, mislim da bih mogao napraviti dosta bolji PDF.

Par knjiga za Pecom sam sam skenirao uz pomoć fotoaparata, provukao sve korz Scan Tailor i dobio dosta bolji rezultat. Pogledaj recimo BasicPecom64 i Pecom 64 - Caslav Dinic sa https://8bitchip.info/oub/Pecom/ (takođe nisu OCR-ovane, ako se ne varam)
 
Bacio sam pogled. Ovo je mnogo bolje. Kod ove dve Pecom knjige se tekst dobro vidi i kad se poveća na 300%. Kod TIM-RACUNARI-SK.pdf to nije bio slučaj.

Ali OCR na Internet Arhivi (Tesseract OCR) je bez problema prepoznao tekst iz TIM-RACUNARI-SK.pdf. Bilo da sam ubacio PDF ili CBZ od ekstraktovanih slika iz originalnog PDF-a. Dakle originalni tekstovi su slabo čitljivi, ali je OCR na kraju bio uspešan.
 
Poslednja izmena:
Eksperimentisao sam malo sa GImageReader-om (GUI interfejs za Tesseract). Vrlo je verovatno da je samo deo TIM-RACUNARI-SK.pdf dobro prepoznat. Neke tekstove nažalost ne prepoznaje.

Ali uspeo sam (uz manje ručne izmene) da izvučem dva teksta:

Meko kao duša (Računari 1988)

Meko kao duša
===========

Beogradski srednjoškolci će od proleća ove godine početi da stiču prva iskustva na računaru TIM-011. Najnoviji proizvodi Instituta „Mihailo Pupin" iz Beograda zapažen je po svojim kvalitetima i pre nego što je stigao u Škole. Na prošlogodišnjem Međunarodnom sajmu „Učila 87' stručni žiri mu je dodelio Zlatnu plaketu. Serijom članaka iz peri Milana Tadića, jednog od saradnika na ovom projektu (konstruktor Nenad Dunjić, saradnici Milan Tadić | Ljubiša Gavrilović) nastojaćemo da što temeljitije prikažemo novu Yu mašinu. U prošlom broju smo dali opis hardvera, a napise u ovom i sledećem broju posvećujemo softveru.

Kada je izabran procesor koji će pretstavljati 'srce' novog računara, sledeći logičan korak bio je izbor operativnog alstema. Želeli amo da bude kompatibilan sa CP/M-om, zbog izuzetno bogate programske podrške. S druge strane, CP/M ima nedostataka koje bi trebalo izbeći. Školski računar mora bili opremljen DOS-om koji će biti izrazito funkcionalan | koji će pretstavljati korak napred u razvoju operativnih sistema. Uz sve to, potreban je kod koji što potpunije koristi izvanredne mogućnosti procesora HD 64180.

Pokazalo se da nismo prvi koji su razmišijali na ovaj način: u spiskovima "javnih": (public domain) programa pronašli smo „.Z“ operativni sistem i ZCPR3 komandni procesor To je snažna i fieksibina kombinacija koja je razvijana zajedno sa uslužnim programima, što garantuje dosledan pristup komunikaciji kako između samih programa tako i na relaciji čovek računar.

Virtuelna mašina
------------------------

Za početak, vralimo se malo unazad. Zadatak operativnog slstema je da korisniku omogući komunikaciju sa računarom i upravljanje njegovim resursima. Isti taj korisnik nema ni vremena ni znanja da sam piše programe za sve svoje potrebe, pa ih kupuje od neke softverske lime. Ista ta firma takođe nema vremena (čitaj: finansljskog interesa) da za svaki računar posebno piše jedan te isti program. Odavde se naslućuje još jedan važan zadatak operativnog sistema. stvaranje trv. „virtualne mašine”. Drugim rečima. definiše se mehanizam upravljanja resursima koji je nezavisan od njihove konkretne hardverske realizacije. Time je omogućeno da se jeđan isti program izvršava na većem broju različitih računara. Kako je i sam operativni sistem jedan program (i to dosta složen) od koga se očekuje da bude prilagodijiv, došlo je do podele unutar samog operativnog sistema na dve osnovne cellne: BIOS (Basic Input-Output Sistem) i DOS odnosno BDOS (Basic Disc Operating System). Prvi deo. BIOS je u potpunosti zavistan od hardverske realizacije računara | mora se napisati posebno za avaki računar. Njegov zadatak je da ostvari elementarno upravljanje resursima kao što je čitanje znaka sa tastature, ispis znaka na ekranu ili štampaču, čitanje i upis jednog sektora na disk i sl. Tabela br. 1 predstavlja spisak funkcija koje BIOS podržava. One su realizovane preko tabele skokova (jump table), kako eventualne izmene u kodu samog BIOS-a ne bi uticale na rad BDOS-a ili nekog korisničkog programa koji direktno poziva BIOS. BIIži pogled na sadržaj tabele otkriva jednu interesantnu funkciju allocmem: Pošto procesor HD 64180 direktno adresira samo 64 K kao i Z80, preostalih 192 K upotrebijeni su kao RAM-disk (izuzetan jedino po tome da se njegov sadržaj ne gubi resetovanjem računara). Današnji programi zahtevaju dosta memorije za svoje funkcionisanje. pa im pedesetak kilobajta osnovne memorijske mape često neće biti dovoljno Na scenu stupa 'allocmem' (od: allocate memory location) koji od RAM-diska oduzima deo memorije | dodeljuje je korisničkom programu: Moguće je rezervisati 1—128 K ili osloboditi svu zauzetu memoriju. Dodeljivanje u ovom kontekstu znači da se RAM-disk smanjuje za traženi broj kilobajta i da tom delu memorije neće pristupati ni jedan program operativnog sistema. Na taj način korisnički program može da upotrebi celokupnu memoriju računara jednostavnim korišćenjem poziva BIOS-a i programiranjem jedinice za upravljanje memorijom.

Tabela 1: TIM — 011: mekotvorina
| Memorijska mapa računara TIM-011
|--------------------------------------------------------------------------------------
| FFD0-FFFF 48 b ZCPR3; spoljni stog (external stack)
| FF00-FFCF 200 b · homandni balet (command line bu!fer}
| FE00 -FEFF 456b konfguraciona tabela (ENV}
| F0FF 2b bajt zašte (wheel byte)
| FDF4-FDFE 11b tabela područja za pretraživanje (search path)
| FDD0-FDF3 36b spoljni bafer za opis teke (file control block)
| F0B0-FDCF 80 b ZCPR3, bafer za poruke (message buffer)
| FD00-FD7F 128 b ZCPR3: stog školjke (sheil stack)
| FC00-FCFF 256 b modul imenovanih kataloga (NDR)
| FA00-FBFF 512 b modul za kontrolu toka (FCP)
| F200-F9FF 2048 b modul rezidentnih komandi (RCP)
| EC00-F1FF 1536 b modul za upravljanje ulazom/izlazom (IOP)
| E400-EBFF 2048 b modul za prilagođenje i generator znakova
| B200-E3FF 4608 b BIOS
| C400-D1FF 3564 b ZRDOS
| BC00-C3FF 2048 b ZCPR3
| 0100-BBFF 47872 b 46K TPA
| 0000-D0FF 256b standardni CP/M baferi

Tabela 2: Tabela skokova BIOS-a:
(rutine označene zvezdicom podležu redirekciji.

jp boot ; haldni start (po uključivanju ili resetovanju
jp wboot ; "topli" start
jp conat ;* vraća stanje logičke konzole
jp conin :* učitava znak sa logičke konzole
jp conout;* isplisuje znak na logičkoj konzoli
jp list ;* ispisuje znak na logičkom štampaču
jp punch ;* ispisuje znak na logičkom "bušaču"
jp reader ;* učitava znak sa logčkom "čitača"
jp home ; vraća glave diska na traku 0
jp seldsk ; vrši izbor aktivnog diska
jp settrk ; zadaje broj trake
jp setsec ; zadaje broj sektora
jp setdma ; zadaje početnu adresu za u/i sa diska
jp read ; učitava zadati sektor (e) sa diska
jp write ; učitava zatadi sektor (e) na disk
jp listst ;* vraća stanje logičkog štampača
jp sectran ; prevodi lgoičku ozanku sektroa u fizičku
jp ioinit ; inicijalizuje ceo u/i sistem
jp time ; vraća pokazivač na bafer časovnika
jp swapmem ; zamenjuje kontekst diskova (A-D <=> E-H)
jp alllocmem ; dodeljuje memoriju korisničkom programu

[Slika 1]
[Slika 2]
Konstruktor i njegovi pomoćnici: Nenad Dunjić (sredina) sa Ljubišom Gavrilovićem (levo) i Milanom Tadićem (desno)

Upravljanje informacijama
-------------------------------------

Drugi deo operativnog sistema, BDOS, već vidi računar kao virtuelnu mašinu i komunicira sa njim preko BIOS-a Zađatak mu je da obezbedi "upravljanje informacijama" (information managment), što je nešto širi i pravilniji pojam od "upravljanja datotekama" (file managment), mada se kod personalnih računara to uglavnom svodi baš na rad sa datotekama: otvaranje, pisanje, brisanje, menjanje i sl. Koncepcija CP/M-a vrlo je slična ovoj zamisil, tako da se on sastoji iz četiri osnovna dela: TPA (Transient Program Area). CCP (Console Command Processor). BIOS i BDOS. Pri tome se iza imena TPA, u stvari, krije memorija koja ostane slobodna kada BIOS i BDOS zauzmu svoje mesto i koja služi kao radni prostor korisničkim programima. CCP je, pak, program koji se povremeno nalazi u TPA. Kao što mu i samo ime kaže, zadatak CCP-a je da prima komande od korisnika, analizira ih i pretvara u odgovarajuća uputstva BDOS-u u cilju njihovog izvršavanja. Usled ograničenog prostora, u CCP-u se nalazi kod za samo par osnovnih komandi. Sve ostale nalaze se na disku, učitavaju se u TPA i po svom obliku i značaju ne razlikuju se od korisničkih programa.

Sada na scenu stupaju ZCPR3 (Z80 Command Processor Replacement) i ZRDOS (Z80 Replacement for BDOS). Ono što se odmah vidi je da je kod pisan za Z80 (odnosno Hitachi), čime je na istom prostoru stalo više koda, koji se pri tom i brže izvršava. Ono što se ne vidi je da je osim osnovne sličnosti neophodne da se obezbedi kompatibilnost, ostalo vrlo malo zajedničkog sa CP/M-om. ZCPR3 je potpuno modularno koncipiran, tako da korisnik praktično može da konfigurie i generiše sistem prema svojim potrebama. Što je jod interesantnije, važniji deo rekonliguracije može se izvoditi dinamički, tj. u toku rada.

Kada jedan sistem može imati puno raznih varijanti (6 nezavisnih modula u punoj konfiguraciji). logično je očekivati da negde postoji opis trenutnog stanja, kako bi se održala koncepcija virtualne mašine. Jedan od modula zove se „.environment descriptor” (opisivač okruženja. tj. koniguraciona tabela). Njega koristi ZCPR3 kao i ostali uslužni programi kako bi saznali važne podatke o sistemu: kolika je frekvencija sistemskog sata, koliko disketnih pogona je u sistemu, koliko ima modula i gde se nalaze u memoriji, pa sve do informacija kao što je niz kontrolnih znakova (popularno: escape-sekvence) koje treba poslati na ekran da bi se pozicionirso kursor ili promenila boja.
 
Tim koji dobija (Računari 1988)
Tim koji dobija

Beogradski srednjoškolci će od proleća sledeće godine početi da stiču prva iskustva na računaru TIM-011. Najnoviji proizvod Instituta „Mihailo Pupin“ iz Beograda zapažen je po svojim kvalitetima i pre nego što je stigao u škole. Na ovogodišnjem Međunarodnom sajmu „Učila 87“ stručni žiri mu je dodelio Zlatnu plaketu. Serijom članaka iz pera Milana Tadića, jednog od saradnika na ovom projektu (konstruktor Nenad Dunjić, saradnici Milan Todić i Ljubiša Gavrilović) nastojademo da što temeljitije prikažemo novu Yu mašinu. Na ovaj tekst ne treba gledati kao na klasičan prikaz — njegov cilj nije da donosi vrednosne sudove o mašini — nego samo da upozna čitaoce sa konstrukcijom novog domaćeg računara.

Institut Mihalo Pupin iz Beograda se već duže vreme bavi razvojem računara. Jedna od osnovnih ideja je proizvesti računar po meri korisnika — mašinu koja će najbolje zadovoljavati zahteve krajnjeg korisnika. a ujedno biti i što je moguće univerzalnija. Ova ideja bila je prisutna i kod razvoja Školskog računara TIM-011. Njegov osnovni zadatak je da omogući izradu i izvršavanje nastavnog sotvera. Naravno, njegova arhitektura mora učenicima da pruži lepravnu predstavu o konstrukciji računara uopšte. S druge atrane, svima je jasno de školstvo nema novca i da je vrlo važno da računar bude jeftin, kako bi što više škola moglo da se opremi računarima. Na trećoj strani vreba MS-DOS kao 'de facto' svetski standard. Mora se priznati da već prva dva zahteva pretstavljaju nepomirljive suprotnosti, dok treći #ve to pretvara u (naizgled) nerešivu zagonetku.

Zašto baš tako

Pravilnim pristupom i odmerenim kompromisima, međutim, uvek se može doći do rešenja. Pošto je glavni cilj obrazovanje mladih, pošlo se od sledećih zahteva: moderna arhitektura, snažan procesor, bogata softverska podrška, ergonomski dizajn. Mnogi bi u ovom trenutku bez dvoumljenja rekli „Da, PC-kompatibllan računar!". Međutim. konatruktori su imail drugu ideju: procesor Hitači HD 64180 i 'Z' operativni slatem. Obe koncepcije su stavljene na vagu i ubedljivo je pretegnuo Hitači, jer je 'Z' sistem kompatibilan sa CP/M 2.2 koji je bio svetski standard pre pojave MS-DOS-a i koji i dan-danas živi na hijadama računara širom sveta. U prilog ove tvrdnje ide činjenica da većina softverskih kuća pravi verzije svojih čuvenih PC programa i za CP/M. S druge strane, Izbor Hitačja doneo je znatno jednostavniji dizajn, pouzdaniji rad — I nižu cenu: da bi se napravio pravi kompatibilac, neophodno je kopirati originalni dizajn barem 99% (što po razumnoj ceni mogu jedino Tajvanci), dok su kod CP/M-a dozvoljena skoro slobodne varijacije na temu.

Tokom razvoja i prezentacije računara najčešća primedba (posle PC-nekompatibilnosti) bila je na račun osmobitnog procesora. Veće dužina procesorska reči, međutim ne garantuje i veću snagu računara! U obzir se mora uzeti još mnogo faktora kao što su širina magistrale, organizacija memorije, frekvencija sistomskog sata, interna stanja čekanja i, na kraju i najvažnije, operativni sistem pod kojim računar radi Čitaoci kojima je dostupna strana Iiteratura verovatno su primetili da se prilikom poređenja dva računara najčešće koristi isti (ili bar iste firme) kompajler za generisanje test-primera kako bi se izbegle razlike u optimizaciji generisanog mašinskog koda. Za sada još samo informacija da se bejzik programi izvršavaju na TIM-011 oko 10% brže nego na Turbo PC-u. Kompletna programska oprema biće opisana u jednom od sledećih brojeva. I sada pređimo na...

Pogled izbliza...

Računar se nalazi u kutiji od brizgane plastike u kombinaciji svetlo tamne braon boje. Prepoznatljive su tri osnovne celine: centralna jedinica, monitor i tastatura. Monitor je opremijen osloncem koji omogućava zakretanje oko horizontalne | vertikalne ose. Pričvraćen je za centralnu jedinicu, čime su uklonjena dva kabla. sistem |e postao kompaktniji, a nije se skoro ništa izgubilo zbog malih dimenzija celog sistema. Ekran je zeleni, bez odbljeska, dijagonale 12 inča. To je standardna dimenzija koja omogućava rad dva učenika na jednom računaru.

Drugi važan deo sistema je tastatura. koja je standardni elemenat proizvodnog programa. Opremijena je YU setom znakova, numeričkim dodatkom i funkcijskim tasterima. Osam tastera je predefinisano (kursorske strelice, PgUp, PgoDn, Home i End), dok se preostmlih 10 lako može programirati bilo na nivou operativnog sistema bilo na nivou aplikativnih programa. Sami tasteri su proizvod slovenačke firme TIPRO i najbolji su koji se kod nas mogu nabaviti.

Preostala je centraina jedinica koja sadrži ispravljač za napajanje celog sistema. procesorsku ploču i disketni pogon od 3.5 inča. Zbog male visine centralne jedinice, ulaganje diskete nije najkomfornije Ukoliko se tastatura nalazi odmah uz računar. ali to je kompromis koji |e morao da bude prihvaćen (Misllte li da bi ulaganje diskete sa strane kao kod "atarija" ili "komodora” bilo bolje rešenje?).

Svi priključci i prekidači se nalaze sa zadnje strane: gledano sleva u desno tu su priključak za tastaturu (8-polni DIN), reset taster,
priključak za RS-232 interfejs (25polni i Canon D), priključak za štampač (Centronics interfejs, 25-polni Canon D), prekidač i priključak za napajanje. Ekonomično, bez suvišnih kablova. Na zadnjoj strani nema konektora za proširenje iz prostog razloga što će se eventualna proširenja nalaziti u samoj kutiji u kojoj ima dovoljno mesta.

... I pogled iznutra

Kutija se otvara odvijanjem četiri zavrtnja sa zadnje strane računara. Cela konstrukcija se, potom, može izvući napolje (kablovi koji vode do monitora su dovoljne dužine). Na levoj strani se nalazi propisno oklopljeni prekidački izvor za napajanje snage 65W. koji daje standardnih +5 +12 | -12 VDC. Ostali deo zauzima procesorska ploča koja je urađena u dvoslojno| tehnologiji i dimenzija je "duple Evrope". Na njoj je samo 48 integralnih kola, uključujući tu i memoriju. Svi konektori nalaze se na Štampanoj pločici, tako da je njeno demontiranje stvar nekoliko zavrtnjeva. iznad pločice se nalazi nosač na kome ima mesta za dva disketna pogona od 3.5 inča. Jedno mesto je zauzeto, dok je drugo slobodno za eventualni tvrdi disk. Za njega je već razvijen kontroler na bazi SCSI (Small Computer System Interface) i već izvesno vreme se nalazi u probnom radu.

Na shemi dominira već pomenuti Hitačijev infegralac HD 64180. To je procesor potpuno kompatibilan sa Z80, all mu je mikrokod znatno optimizovan, tako da je na istoj radnoj frekvenciji brži oko 20% od Z80. Hitači je otišao korak (od sedam milja) dalje u poboljšavanju Z80: u istom kućištu sa procesorom nalazi se i mnoštvo perifemih uređaja: MMU (jedinica za upravijenje memorijom), DMAC (kontroler za direktan pristup memoriji), DRAMRC (kontroler ovežavanja dinamičke memorije). INTC {kontroler prekida), ASCI (dva asinhrona serijeka interfejsa th. RS-232), PRT (dva programabilna tajmera) i još neki. Sjajnu budućnost ovog integralca potvrđuje i vest de je čak i sam Zilog otkupio licencu i da je uvek aktuelni Hewlett-Packard promovisao razvojni sistem za HD 64180.

Na ploči, osim CPU-a, postoji samo još jedno kolo urađeno u VLSI (Very Large Scale Integration) tehnologiji — kontroler disketnog pogona. Proizvod je firme Standard Microsyetems Corporaton i nosi oznaku SMC 9229. To je. u stvari poznati NEC 765A (imamo ga i u PC-u) koji je ugrađen u isto kućište zajedno sa Intel-om 8272 i digita!nim separatorom podataka SMC 9229. Kontroler podržava do četiri disketna pogona proizvoljnih dimenzija i gustina zapisa. Osnovni format TIM-a je dvostrani zapis duple gustine kapaciteta 800 K (za datoteke, programoteke i sve ine teke dostupno je 782K).

Još dva velika kola predetavljaju ULA i video-kontroler... Ne! Na ploči nema specijalizovanih (čitaj nenabavljivih) kola i skupih videokontrolera. Računar je opremijen originalnim, snažnim i jednostavnim grafičkim interfejsom. Rezolucija 512xX256 sa dva bita (četiri boje) po tački daleko nadmašuje CGA. Grafički RAM-a (32K) je odvojen i smešten u ulazno/iziazni adresni prostor mikroprocesora (Hitači, za razliku od Z80, omogućava korektno korišćenje svih 64 K ulazno-izlaznog adresnog prostora). Pristup RAM-u je organizovan po tzv „Interleaved: metodu, što znači da procesor može da čita ili piše kad-god to zaželi i to bez stanja čekanja. Ovaj metod omogućava prikaz i do 8 različitih ekrana u sekundi. Petnaestak TTL kola kojima je realizovane cela grafika obezbeđuju | mogućnost mekanog ili skokovitog pomeranja slike.

Toliko o hardveru. Prikaz softvera, memorijske mape |imehanizama funkcionisanja očekujte u sledećim brojevima.

Milan Tadić


Prvi članak (članak iz prethodnog posta) je iz Računara 34 (januar 1988), autor je Ninoslav Čabrić.

Za drugi članak nisam siguran odakle je, ali pretpostavljam da je iz Računara i da je objavljen 1988. godine (kao i u većini ranih članaka o TIM-011, autor je deo konstrukcionog tima). Tačna informacija sledi kasnije.

Kad budem imao vremena, formatiraću tabele i dodati slike u prvi članak. Ako neko ima original broja 34 i ako su slike u originalu dobrog kvaliteta, možemo dogovoriti da se to nekom prilikom ponovo skenira u boljoj rezoluciji i kvalitetu.
 
Poslednja izmena:
Sad gledam rezultat OCR-a dobijen preko auto-konverzije Internet Arhive i rezultat uopšte nije loš. Neki tekstovi koji kod mene na desktop računaru sa GImageReaderom nisu prepoznati su vrlo solidno prepoznati.

Možda rade neko skaliranje slika pre OCR-a? Imao sam ranije u nekim slučajevima uspeha sa time.
 
FFD0-FFFF48 bspoljni stog (external stack)
FF00-FFCF200 bkomandni bafer (command line buffer)
FE00-FEFF456 bkonfiguraciona tabela (ENV)
FE0FF2 bbajt zaštite (wheel byte)
FDF4-FDFE11 btabela područja za pretraživanje (search path)
FDD0-FDF336 bspoljni bafer za opis teke (file control block)
F0B0-FDCF80 bZCPR3: bafer za poruke (message buffer)
FD00-FD7F128 bZCPR: stog školjke (shell stack)
FC00-FCFF256 bmodul imenovanih kataloga (NDR)
FA00-FBFF512 bmodul za kontrolu toka (FCP)
F200-F9FF2048 bmodul rezidentnih komandi (RCP)
EC00-F1FF1536 bmodul za upravljanje ulazom/izlazom (IOP)
E400-EBFF2048 bmodul za prilagođenje i generator znakova
B200-E3FF4608 bBIOS
C400-D1FF3564 bZRDOS
BC00-C3FF2048 bZCPR3
0100-BBFF47872 b46K TPA
0000-D0FF256 bstandardni CP/M baferi

Tabela 1: Memorijska mapa računara TIM-011

Računari #34, 01-1988.


jp boothladni start (po uključivanju i resetovanju)
jp wboot"topli" start
jp conat*vraća stanje logičke konzole
jp conin*ispisuje znak na logičkoj konzoli
jp list*isipisuje znak na logičkom štampaču
jp punch*ispisuje znak na logičkom "bušaču"
jp reader*učitava znak sa logičkog "čitača"
jp homevraća glavu diska na traku 0
jp seldskvrši izbor aktivnog diska
jp settrkzadaje broj sektora
jp setseczadaje broj sektora
jp setdmazadaje početnu adresu za u/i diska
jp readučitava zadati sektor (e) sa diska
jp writeučitava zadati sektor (e) na disk
jp listst*vraća stanje logičkog štampača
jp sectranprevodi logičku oznaku sektora u fizičku
jp ioinitinicijalizuje u/i sistem
jp timevraća pokazivač na bafer časovnika
jp swapmemzamenjuje kontekst diskova (A-D <=> E-H)
jp allocmemdodeljuje memoriju korisničkom programu
Tabela 2: Tabela skokova BIOS-a (rutine označene zvezdicom podležu redirekciji)

Računari #34, 01-1988.
 
Poslednja izmena:
Nazad
Vrh Dno