+ All Categories
Home > Documents > da zeroSTA SR3 LDXI$7F SlX uni LD~$4881 Rts LDA la locazione 4000. Abbiamo combinato un bel...

da zeroSTA SR3 LDXI$7F SlX uni LD~$4881 Rts LDA la locazione 4000. Abbiamo combinato un bel...

Date post: 20-Feb-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
5
da zero di Andrea de Prisco Banking da linguaggio macchina Dopo aver visto il mese scorso come il Commodore 128 mette a disposizione tutta la'sua memoria (ram e rom) al livello del linguaggio di programmazione Basic, questo mese ci addentreremo maggiormente nel merito mostrando come siano possibili analoghi «smanettamenti» anche da linguaggio macchina. Il Monitor Per programmare in linguaggio macchina occorre un buon monitor: ovviamente i fosfori in questo caso non c'entrano proprio nulla. Ci serve un monitor per il linguaggio macchi- na, che stavolta mamma Commodore s'è ricordata di infilare dentro alle rom di sistema, come aveva già fatto tanti anni fa col dottor Peto Un moni- tor di linguaggio macchina è dunque uno strumento indispensabile per po- ter manipolare facilmente le celle di memoria o per essere più precisi i con- tenuti di queste. Il monitor del 128 fa anche qualcosa in più: assembla e di- sassembla codici mnemonici e porzio- ni di memoria, converte con estrema facilità numeri da una base all'altra MCmicrocomputer n. 57 - novembre 1986 non senza permettere una ragionevole interazione tra computer e la più im- portante delle periferiche, l'unità a di- schi, almeno per quanto riguarda di- rectory e comandi DOS. Tutto ciò è comunque ben illustrato sul manuale fornito con la macchina al quale naturalmente vi rimandiamo qualora non aveste mai usato questa feature. Il registro CR della MMU Ogni manipolazione della configu- razione della Memoria coinvolge sem- pre la MMU del 128 il cui acronimo sta appunto per Memory Manage- ment Unito Per dialogare con questa unità, come avviene anche per gli altri processori interni al 128, si usano dei regi~tri mappati in alcune celle di me- mOfla. Noi faremo riferimento, per tutto quest'articolo, al registro CR (già no- minato il mese scorso) locato all'indi- rizzo esadecimale $FFOO. Sempre co- me già detto, tale registro è ovviamen- te accessibile da qualsiasi configura- zione di memoria dato che deve essere sempre possibile passare da un banco ad un altro: se in qualche banco que- sto non fosse accessibile, una volta se- lezionato quel banco non si potrebbe più «venir via» non potendo dialoga- re con la MMU. Di ciò si evince che per passare da un banco ad un altro, da linguaggio macchina basta infilare qualcosa nel registro CR per ottenere il voluto. Quasi. 173
Transcript
  • da zerodi Andrea de Prisco

    Banking da linguaggio macchina

    Dopo aver visto il mese scorso come il Commodore 128 mette a disposizione tutta la'suamemoria (ram e rom) al livello del linguaggio di programmazione Basic, questo mese ci

    addentreremo maggiormente nel merito mostrando come siano possibili analoghi«smanettamenti» anche da linguaggio macchina.

    Il Monitor

    Per programmare in linguaggiomacchina occorre un buon monitor:ovviamente i fosfori in questo casonon c'entrano proprio nulla. Ci serveun monitor per il linguaggio macchi-na, che stavolta mamma Commodores'è ricordata di infilare dentro allerom di sistema, come aveva già fattotanti anni fa col dottor Peto Un moni-tor di linguaggio macchina è dunqueuno strumento indispensabile per po-ter manipolare facilmente le celle dimemoria o per essere più precisi i con-tenuti di queste. Il monitor del 128 faanche qualcosa in più: assembla e di-sassembla codici mnemonici e porzio-ni di memoria, converte con estremafacilità numeri da una base all'altra

    MCmicrocomputer n. 57 - novembre 1986

    non senza permettere una ragionevoleinterazione tra computer e la più im-portante delle periferiche, l'unità a di-schi, almeno per quanto riguarda di-rectory e comandi DOS.

    Tutto ciò è comunque ben illustratosul manuale fornito con la macchinaal quale naturalmente vi rimandiamoqualora non aveste mai usato questafeature.

    Il registro CR della MMU

    Ogni manipolazione della configu-razione della Memoria coinvolge sem-pre la MMU del 128 il cui acronimosta appunto per Memory Manage-ment Unito Per dialogare con questaunità, come avviene anche per gli altriprocessori interni al 128, si usano dei

    regi~tri mappati in alcune celle di me-mOfla.

    Noi faremo riferimento, per tuttoquest'articolo, al registro CR (già no-minato il mese scorso) locato all'indi-rizzo esadecimale $FFOO. Sempre co-me già detto, tale registro è ovviamen-te accessibile da qualsiasi configura-zione di memoria dato che deve esseresempre possibile passare da un bancoad un altro: se in qualche banco que-sto non fosse accessibile, una volta se-lezionato quel banco non si potrebbepiù «venir via» non potendo dialoga-re con la MMU.

    Di ciò si evince che per passare daun banco ad un altro, da linguaggiomacchina basta infilare qualcosa nelregistro CR per ottenere il voluto.Quasi.

    173

  • 128 da zero

    C000 8000 4008 nODORam FFFF BFFF 7FFF E~Oe

    \76154132[Il]]

    te il blocco del sistema fino a nuovoReset. Questo perchè siamo saltati inmezzo ai dati (leggi: numeri a casac-cio per il processo re) e, si sa, non tuttii numeri compresi tra Oe 255 sono co-dici operativi di istruzioni di macchi-na.

    Considerato poi che la situazione dicui sopra è tutt'altro che irreale, senon ci fosse una soluzione sarebbedavvero un bel casotto. Fortunata-mente di soluzioni ce ne sono due,una hardware e l'altra software.

    Spegnete pure il saldato re, nondobbiamo fare nessuna modifica è tut-to compreso nel prezzo. Hardware nelsenso che ci riferiremo al modo comeè stato costruito il 128 e Software rifa-cendoci ad opportune routine di siste-ma operativo. In ogni caso farina dimamma Commodore.

    Prima soluzioneAlla base di tutti i cambiamenti di

    banco, oltre al registro CR esiste unaltro componente altrettanto impor-tante: il primo K di memoria RAMcomune sia a RAM Oche a RAM I: ledue pagine di memoria disponibili su128. Ciò vuoi; dire essenzialmente chequanto mostrato in figura I, se l'aves-simo effettuato nelle prime 1024 loca-zioni di memoria non avrebbe provo-cato nulla di paranormale.

    La figura 2 mostra come stanno ifatti: si nota come la cosiddetta Com-mon RAM sia indipendente dal bancoselezionato. Allocando le nostre routi-ne nel primo K di memoria (figura 3),non si hanno tali problemi: di fatto laCommodore stessa usa questa zonaper effettuare le sue interazioni tra pa-gine, a livello di sistema operativo e/oBasic 7.0.

    L'unico problema è dato dal fattoche in questo primo K non troviamomolto spazio libero per i nostri pro-grammi essendo quasi interamente oc-cupato da variabili e sottoprogrammidi sistema operativo. In altre parole,se ci serve qualche buco qua e là otte-niamo facilmente il nostro scopo, mase servono grosse zone di memorianon possiamo non ricorrere al metodosoftware che andiamo subito ad illu-strare.

    8 RoltlR~88 Rolt81 IntRoH18 ExtRol111 RJ"

    Figura 3

    OD""On lWiLDA 1$88STA SR3LDXI$7FSlX uniLD~$4881Rts

    LDA la locazione 4000. Abbiamocombinato un bel pasticcio: infatti icambiamenti di banco non riguardanosolo gli accessi ai dati da parte delleistruzioni in linguaggio macchina maquanto effettivamente il processo repreleva per eseguire. Nella fattispecie,l'aver eseguito la sequenza:

    LDX#$7FSTX $FFOO

    corrisponde in pratica (solo quelle dueistruzioni) ad aver effettuato unsalto, un JMP, all'altro banco di me-moria, con le catastrofiche conseguen-ze che possiamo supporre: sicuramen-

    18 Rolt81 IntRot-l18 ExtRoll11 RaM

    banbank O

    81 RaM 881 RM\ l18 RaM 811 RJH l

    RTS -

    Figura I

    Il I I l'

    hnk 11hnk 8 LDA1$88

    $1A$83"LDX1m ..$IX srrel ??LDA$488. ????

    ;;

    Il problema infatti è un pò più com-plesso: infatti anche il flusso di con-trollo del programma in corso verreb-be catapultato indesideratamente sulbanco desiderato. Facciamo un esem-pio: immaginiamo di aver scritto unprogramma in linguaggio macchinanel banco O della memoria. Sempreper ipotesi poniamo il caso in cui a uncerto punto ci serve il contenuto dellalocazione 4000 del banco l, intera-mente riempito di dati (ovvero non-programmi). La situazione è mostratain figura l: dopo qualche operazionesi pone $7F nel registro CR per cam-biare banco prima di prelevare col

    Figura 2 Figura 4: Registro CR della Hi1USoluzione software

    Lasciamo dunque il nostro primo Kdi memoria e scriviamo comodamenteil nostro programma i'n linguaggio

    174 MCmicrocomputer n. 57 - novembre 1986

  • Tabella 1

    ria con il desiderato, nella fattispeciemetteremo nella cella $02 il numerodel banco desiderato (0-15), nelle duesuccessive l'indirizzo dove è posta lanostra subroutine, nelle celle $05 e se-guenti rispettivamente il registro distato e i registri A-X- Y coi quali desi-deriamo che venga eseguita la subrou-tine. Settati tali parametri, possiamoeseguire dal nostro banco (qualsiasi)JSR $02CO per ottenere quanto volu-to. I risultati dell'esecuzione della sub-routine li ritroveremo nelle celle$05-$09 come mostrato in tabella I.

    Proviamo ora a commentare quantosuccede al momento della chiamata a$02CO, tenendo sott'occhio il listato2. La prima operazione è una chiama-ta di subroutine all'indirizzo $02E3(per la cronaca questo è l'indirizzodella prossima routine che mostrere-mo). Essenzialmente lì succede che lecelle contenenti indirizzo e status ven-gono infilate nello stack (vedremo trapoco perché); di seguito a questo è ef-fettuata la trasformazione da numerodi banco desiderato a corrispondentevalore di CR (JSR $FF6B corrispondea saltare al listato I, anche se con unpassaggio in più) per poi aggiornarloovvero switch-are banco; infine sonocaricati i registri A-X- Y coi corrispon-denti valori immessi precedentemente

    S02E3739

    Sal ta dal banco 15 aduna locauone pasta inqualsiasi banco

    JI1PFAR S02 = tt bancaS03 ~ Hi addr.S04 ; Lo addr.S05 ::z status106 ::I regi stra AS07 ::z regi stra X108 = regi stro .V

    +---------+-------------------- -----+----------+------------------+---------------------+INOFET Legge i l contenuta dì SF7DO A := Puntatore al A = Byte cercata

    una celI. post. in 63440 puntatore al: qual si asi banco byte

    X := tt bartcoY ; offset

    +---------+--------------------------+----------+------------------+---------------------+INOSTA Scrive un byte in una IF7DA A = Byte da

    cella pasta in QualsIasi 63450 scriverebanco $289 = Punt.toré

    al puntatorealla cella

    X = • bancoY .= offset

    +-------+ ------------------------+----------+-----------------+---------------------+INDCMP Confronta l' accumul atore IF7E3 $2(:8. ~ Puntatore Status register

    con una celI a post.a in 63459 al puntatorequalsiasi banco .lla celI.

    A • carattere d••comp.ar.re

    X .•• b.nco+-----+----------------------+-------+-----------------t'--------------------+

    Tabell •. ri,assuntiva d~lle routlne del kernal per l •. manipol"zlone dei banchi di memoria+--------+------------------------+----------+----------------+-------_._--------+: Routine : Descrizione : IndirIzzo: Paralllttri IN : Parametri QUT :.------+-----------------------+----------- .•.----------------~-+---------------------+: GETCFG : Tr.5fo,.."a ~l n.ro del : Sr7~C : X = • banco : A :I: Valore CR

    : b.nco n~l corrIspondente: 63438: VOlI ore di CR

    +---------+-----------------_._----+-------+----------------+------------------+JSRFAR ChiamA dal banco 15 unA 102CO 102 ,. • banco 105 = status

    subroutlne post. in 717 103 := Hi .ddr. SOl, = regIstro A:. qu.lsi as~ b.nco 104 ,. Lo addr. 107 :z regI stra X

    105 ,. status 108 = registro YIOb ,. registro A $09 = stack pointer107 = regi stra X$08 = regi stra Y

    +---------+--------------------------+-----------+----------------+---------------------+

    macchina dove ci pare (o quasi). Perinteragire con gli altri banchi possia-mo usare alcune routine di sistemaoperativo atte allo scopo.

    La tabella I riassume tali routineche, come vedremo, sono tutte piutto-sto semplici sia da capire che da usa-re. A tale scopo ci riferiremo anche ailistati in linguaggio macchina che ledescrivono, presenti in queste pagine.

    La prima routine serve per trasfor-mare il numero di un banco (0-15) nelcorrispondente valore da «pok-are»nel registro CR della MMU. Per usar-la' è sufficiente mettere in X il bancodesiderato ed effettuare un JSR all'in-dirizzo $F7EC del banco 15. AI ritor-no da questa, troveremo nel registro Ail valore corrispondente. Dando unosguardo al listato I possiamo notarequanto sia banale tale trasformazioneche non è altro che la lettura di un va-lore in una tabella posta a partire dal-l'indirizzo $F7FO.

    La seconda routine, mappata nelprimo K (guardacaso) a partire dal-l'indirizzo esadecimale $02CO per-mette di chiamare una subroutine po-sta in qualsiasi banco a condizione pe-rò che la chiamata avvenga dal banco15 (a tal proposito fra un po' diròqualcosa). Prima di utilizzarla è neces-sario caricare un pò di celle di memo-

    +---------+-----------+: n.banco : valore cr :+---------+-----------+

    O $3F$7F

    .: 2 $BF3 $FF4 $165 $566 $967 $06B $2A9 $6A

    10 $6A11 $EA12 $0613 $(>A14 $(>115 $(>(>

    +---------+-----------+

    Tabella 2Corrispondenza tra numerobanco e valore di CR

    Listato 1FF7EC 80 F0 F7 LOA $F7F0,XFF7EF 60 RTS

    Listato 2002CO 20 E3 02 JSR $02E300200 85 06 STA $0600202 86 07 STX $07

    . 00204 84 08 STY $0800206 08 PHP00207 68 PLA00208 85 05 STA $050020A 8A TSX00208 86 09 STX $0900200 A9 00 LOA *1$000020F 80 00 FF STA $FF00002E2 60 RTSee2E3 A2 ee LOX 11$00002E5 85 03 LOA $03,X002E7 48 PHA002E8 E8 INX002E9 E0 03 CPX 11$03002E8 90 F8 BCC $02E5002EO A6 02 LOX $02002EF 20 68 FF JSR SFF68002F2 80 00 FF STA $FF00002F5 A5 06 LOA $06002F7 A6 07 LO:-

  • 128 da zero

    Listato 4 Listato 5

    FF70A 48 PHA FF7E3 48 PHAFF70B BO F0 F7 LOA SF7F0,X . FF7E4 so F0 F7 LOA SF7F0,XFF70E AA TAX FF7E7 AA TAXFF70F 68 PLA FF7E8 68 PLAFF7E0 4C AF €l2JM" S02AF FF7E9 4C SE 02 JMP se28E

    002AF 48 PHA 002BE 48 PHA002B0 AD 00 FF LOA SFF00 0a28F AD 00 FF LOA SFFel0002B3 8E el0FF STX SFF00 0e2C2 8E 00 FF STX SFF0000286 AA TAX ae2CS AA TAX00287 68 PLA 002C6 68 PLA00288 91 FF STA (SFF),Y 002C7 01 FF CMP (SFF),Y00281'1SE 00 FF STX SFF00 002C9 SE 00 FF STX SFF000e2S0 60 RTS 002CC 60 RTS

    alla chiamata nelle celle $06-$08.L'RTI di fondo quasi per magia ef-

    fettua il salto alla subroutine desidera-ta, nonostante non vi sia stato alcuninterrupt: è solo che alla Commodoresono molto furbi. Infatti l'RTI non faaltro che scaricare dallo stack un pri-mo valore per porlo come status, diseguito a questo preleva i due succes-sivi valori e, interpretati come un indi-rizzo di 16 bit, salta alla locazione cosìottenuta.

    Badaben-badaben-badaben che lasubroutine a cui siamo diretti prima opoi terminerà con un RTS (se no, chesubroutine è?) e la domanda da porci

    Per chi non saBrevemente dedicheremo questo ri-

    quadro a coloro i quali non conoscono(ancora) il linguaggio macchina del 6502e gentile famiglia, tra cui il processore del128 1'8502. Ovviamente non faremo uncorso d'Assembler neppure alla lontana,ci limiteremo semplicemente a spiegare leistruzioni che il processore è in grado dieseguire.

    LDA, LDX, LDY, STA, STX, STY, ser-vono rispettivamente per caricare un bytein uno dei tre registri dell'8502 (LO staper load) o per scaricare il contenuto diuno di questi tre registri in una cella dimemoria (ST sta per sto re).

    PHP, PHA, PLP, PLA servono per im-mettere nello o togliere dallo stack il pun-tatore al top dello stack stesso o il conte-nuto del registro A. Esistono poi istruzio-ni per eseguire trasferimenti tra registricome TSX, TXS, TAX, TXA, TAY, TTI\che spostano i contenuti dei registri A, X,Y e S detto anche status register.

    A questi si aggiungono operazioni per

    176

    è naturalmente: dopo tutti questi spip-polamenti dove mai torneremo?

    Semplice, a $02DO ovvero all'istru-zione successiva al JSR $02E3 che ab-biamo effettuato qualche centinaio diparole fa. In effetti ancora non è fini-ta: occorre mettere in $06-$08 il conte:nuto dei registri A-X- Y, in $05 lo sta-tus e in $FFOO il valore O per ripristi-nare il banco chiamante, 15.

    Apriamo, prima di continuare, unapiccola parentesi: per la scrittura diarticoli specifici come questi, è d'ob-bligo una massiccia documentazionein tema prima di cimentarsi in tali«prodezze». Nel caso di 128 da zero,

    incrementare un registro (INX, INY) oper-il decremento (DEX, DEY) o riferitea una qualsiasi cella di memoria (INC,DEC). E possibile confrontare un registrocon un dato (CMP, CPX, CPY, BIT) cosÌcome effettuare un salto a seconda di unacondizione verificatasi precedentementela quale ha settato o resettato uno dei bit(C, Z, N, V) dello status register. Tali ope-razioni di salto condizionato sono: BCC,BCS, BYC, BYS, BNE, BEQ, BMI, BPL.

    A queste aggiungiamo un paio di ope-razioni per eseguire somma e sottrazionedi byte (ADC, SBC), operazioni logichecome l'and, l'or inclusivo, l'or esclusivo(ANO, ORA, EOR), shift a destra e a si-nistra di una posizione (ASL, LSR), rota-zione di byte (ROR, ROL), manipolazio-ne del registro di stato (SEC, CLC, SED,CLD, SEI, CLI, CLV), salto incondizio-nato (JMP), interrupt da programma(BRK), salto a sottoprogramma (JSR) erelativo ritorno (RTS), ritorno da routinedi manipolazione delle interruzioni (RTI)e per ultima operazione NOP che non faun bel nulla.

    dato che di programmer's referencesguide della Commodore, fino a questomomento manco a parlarne, il «riferi-mento» è un libro edito dalla AbacusSoftware denominato Tricks and Tips.Peccato che se non si sta veramenteattenti a quello che c'è scritto si fini-sce per confondersi le idee più chesenza libri affatto. Tanto per citarneuna, la routine appena commentata èspacciata per «chiamata di subroutineda qualsiasi banco in qualsiasi banco»con tanto di cella $09 atta a contenereil banco chiamante ... Oppure i 128americani sono diversi ... oppure è di-verso il 128 del sottoscritto ...

    Bene, tornando alla tabella I, la suc-cessiva routine permette di saltare auna qualsiasi locazione posta in qual-siasi banco. Inutile dirvi che non com-menteremo il listato dato che esso cor-risponde alla porzione $02E3-$02FBche abbiamo già mostrato. Passiamooltre: tocca a INFET, mappata a par-tire dall'indirizzo $F7DO (vedi listato3) che permette di leggere il contenutodi una cella posta in qualsiasi banco.Come al solito tutta la complessità stanel setta re i parametri, tra cui il punta-tore al puntatore (!) al byte cercato daporre nel registro A. Ovvero ci sceglia-mo due celle contigue in pagina zero eposto in esse l'indirizzo voluto, scri-viamo in A l'indirizzo della prima diqueste due celle. Come è consuetudi-ne del linguaggio macchina, indirizzia 16 bit vengono spezzati mettendo laparte bassa nella prima delle due cellee la parte alta nella seconda. Cariche-remo poi in X il banco desiderato e inY un eventuale offset per accessi indi-ciati. AI ritorno da questa routine tro-veremo in A il byte cercato.

    Di fattura assai simile, la successivaroutine, mappata all'indirizzo $F7DApermette di scrivere un byte in unacella posta in qualsiasi banco. Mette-remo come prima in X il banco desi-derato, in Y un eventuale offset men-tre in A il byte da scrivere e nella cella$02B9 (come prima in A) il puntatoreal puntatore alla cella. Semplice, no?

    Stiamo finendo: l'ultima routinepermette di confrontare l'accumulato-re col contenuto di una cella posta inqualsiasi banco. Il risultato lo otterre-mo naturalmente nello status registercome per qualsiasi altra comparazionesemplice. Come prima in $02C8 vamesso il puntatore al puntatore allacella e in X il banco desiderato.

    MCmicrocomputer n. 57 - novembre 1986

  • L 9.900L 9.900L 1.300L 1AOO

    L. 1.100.000

    elTIZEN MSP 15 - Stampante Citi-zen ad aghi, 136 colonne, velocità160 CPS, NLQ 40 CPS, protocolloIBM/EPSON.Profilo piatto.Alta affidabilità.l'0::I:c:

    SCHEDE DI ESPANSIONE PER PC

    NOVITA' IN ARRIVO· TELEFONATE!!

    PARTI STACCATE

    ACCESSORI

    ex 20 - Scheda grafica video mo-nocromatico (Hercules) con con-nettore standard RGBmL. Prov-vista di porta parallela per stam-pante. Risoluzione 720x348.

    L, 153.900ex 25 - Scheda grafica video colori con connettore standard RGB e connettore con uscitavideocomposita. Risoluzione 640x200 (bianco/nero), 320x200 (16 colori). L. 153.900ex 26 - Scheda EGA (Enhanced Graphic Adapter). Adattatore per video colori ad alta riso-luzione: 640x200 16 colori; 640x350 64 colori. Uscita parallela per stampante. L 480.000ex 30 - Scheda multi 110, con 2 porte seriali (una sulla scheda), una porta parallela, orolo-gio calendario; connettore per joystick. Cavetto per una porta seriale. L 140.&00ex 40 - Scheda EPROM/PROM Writer con 4 porte. Programma le EPROM, con relativosoftware permette di verificare lo stato della EPROM, di visualizzare e/o modificare il conte-nuto, scrivere e caricare da buffer o da files su disco. Consente di programmare in sequen-za 4 EPROM differenti. L 361.000ex 50 - Scheda seriale RS 232. Permette di collegare le periferiche con standard per co-municazioni; come MODEM, MOUSE, ecc. L. 63.000ex 52 - Scheda Controller per 2+2 drive con cavo per 2 drive. L 68.GOOex 70 - Scheda 576Kb RAM (senza RAM). Espans. di memoria RAM da 576Kb. L 69.500MB 4 - Main Board Turbo 640Kb (scheda madre), con 8 slot e 256Kb di memoria RAM giàinstallati. Doppio clock 4,77-8 MHz. L 310.000

    ep 25 - Cavo per stampante parallela; lunghezza 1,8 mI.es 25 - Cavo per stampante seriale; lunghezza 1,8 mI.SK 12 - Dischetti 5' 1/4, SS DD Bulk (minimo 100 pezzi).SK 14 - Dischetti 5' 1/4, DS DD Bulk (minimo 100 pezzi).

    LH 4 - Disk drive a trazione diretta 360K slim. Made in Japan. TEAC. L 21a.ooOLH 5 - Disk drive a trazione diretta 360K slim. Made in Japan. Toshiba. L 23s.o00HO 20 - Hard disk 20MB; (NEC) controller Western digital. Garan. 1 anno. L ooס.ס1.15HO 10 - Hard disk 10MB; (NEC), controller Western digital. Garan. 1 anno. L 950.000MS 808 - Joystick 3 pulsanti, potenziometro prese!. L 32.000MP 303 - Modenphone 303. Beli 103lCCITI V21 compatibile, 300 BPS. Telefono incorpora-to, con uscita RS 232 per collegamento PC approvato norme FCC. L 199.000GM 4 - Genius Mouse, Endecoder ottici, per PC XT/ATcompatibili; 3 pulsanti per il disegno,massima traccia disegnabile 200 mm/sec, connettore: D-25P (standard). Applicazioni soft-ware: D base 111, Multiplan, Wordstar, Autocad, ed altri programmi compatibili. L 185.000TASTIERA T-5060 - Pratica, ergonomica, con 10 tasti funzione. Gestita da microprocesso-re, con 84 tasti compatibile XT/AT,3 led indicatori (Caps lock, Num lock, Scrolilock), cavodi collegamento flessibile, inclinazione regolabile, ripetizione automatica del tasto premuto.Comando soffice del tasto. Approvata norme FCC. L 110.000PX - Alimentatore da 150 Watt. Interruttore laterale. Alta affidabilità. L 134.000ex 4 - Contenitore per PC, tipo standard. Con coperchio apribile; con accessori. Look XT.Usato per la versione Ki!. L 59.000ex 5 - Come sopra ma con look AT. L 6s.o00ex 6 - Come sopra ma in versione professo Con coperchio a slitta. L 7s.o00

    P 14 T MINI - Versione da tavolo occupa meno spazio con + accessori.eOMPAXT - Portatile XT con schermo 9 pollici incorporato.eOMPAT - Compatibile AT.Main board baby portatile con monitor 9".MOOEM HAYES (R) - Compatibili CCITI O± 1.200 bps. Si monta su slot del Pl4-K4 o qua-lunque altro. PREZZI IVA ESCLUSA

    P 14 T - Personal computer CPU8088.2Jveloce (8087 opz)Main board turbo clock 4.77-8MHzcon installati 256K espandibili640K 8 slol. Controller per 2 diskdrive. Installati n. 1 disk drive atrazione diretta da 360Kb mecca-nica slim. Altoparlante interno.Contenitore metallico, con coper-chio apribile, look AT.Tastiera er-gonomica con 10 tasti funzione.Modello 5060. Alta affidabilità conelettronica capacitiva. Approvatanorme FCC. Corredata di schedaCX 20 monocromatica alta risolu-zione uscita parallela oppure ascelta di scheda CX 25 grafica vi-deo colore+ parallela (precisarenell'ordinazione). Montato collau-dato con garanzia GVH di 12 me-si L 1.100.000

    K4 T - Caratteristiche generali co-me il P 14 ma in versione Kit, daassemblare. Contenitore standardlook AT tempo di montaggio ± 2ore. Con accessori ed istruzioniper il montaggio (in versione kitnon viene fornita la scheda CX 20o CX 25) L 899.000

    elTIZEN 1200 - Stampante 80 co-lonne, velocità 120 CPS, NLQ 25CPS, protocollo IBM/EPSON, inter-faccia parallela standard Centronicscompatibile intercambiabile adinnesto.Garanzia di 2 anni. L ooס.ס57

    eOM 1200 - Video monocromatico 12', fosfori verdi (gn) o aran-cio (or) a scelta. Ingresso video composito, regolazione lumino-sità e contrasto, 256 caratteri diversi, 25 righe da 80 colonne,schermo antiriflesso inclinato per una più facile lettura, basso con-sumo, commutatore bassalalta sensibilità. Definizione orizzontalee verticale: 1000 linee. L 199.000

    MO 3 - Video colori 14', 16 colori RGB, 14 MHz, ingresso TIL,risoluzione da 640 pixel orizzontale/200 linee verticale. Regola-zio ne luminosità, colore e contrasto, 256 caratteri diversi, 25 ri-ghe da 80 colonne, tubo a 90x per una durata maggiore, 70 wattmax di consumo, connettore a 9 pino Commutatore per fosfori:verde/aranciol16 colori. L 699.000

    KLM 1211- Center video monocromatico 12', ingresso TIL, pre-sa a 9 pin compatibile IBM, banda passante 25 MHz. Risoluzio-ne centrale 1100linee. Risoluzione laterale 900 linee. Regolazio-ne luminosità e contrasto. L 180.000

    PHILlPS eM 8833 - Video colori 14', con audio incorporato. Scher-mo antiriflesso. Due ingressi RGB (Scart) e RGBI, un ingressovideocomposito. Banda passante maggiore 12 MHz. Tubo a 90x.16 colori riprodotti. Risoluzione orizz.: 600 pixels. Risoluzionevert.: 285 linee. Numero di caratteri: 2000 (80x25). L649.000

    PHILlPS BM 7513 - Monitor a fosfori verdi 12', tubo a 9Ox. Scher-mo antiriflesso. Ingresso TIL. Risol. orizz.: 920 pix. Risol. vert.:350 pix. Numero di caratteri: 2000 (80x25). L 189.000

    GVH - Via della Beverara, 39 - 40131 Bologna - Te!' 051/370687- 360526 - Telex 511375 GVH I

    COMPATIBILlIBM®e 1MB è un marchio registrato della International Business Machines Corpo

    OISTRIBUTORI ESCWSIVI 01 ZONA: Bologna, BOTTEGA ELETTRONICA, Via Ballistelli 61C - Cerignola (FG), DISCOTECA OMNIA, Via Foligno 22/B - Forli, PLAYER, Via F.lli Val piani 61A - Lecce, CAMEL, Via Marinosci 13 - Milano, CRCITALIA, Via Dario Papa 4n - Modena, ELECTRONIC CENTER, Via Malagoli 36 - Napoli, POWER, C.so Secondigliano 397 - Pertosa (SA), E.C. computer, Via S. Maria delle Grazie - Salerno, ELETTRONICA HOBBY, Via L. Cacciatore 56- GENERAL COMPUTER, C.so Garibaldi 56 - Treviso, ELB TELECOM, Via Montello 13 abc.

    CENTRI ASSISTENZA TECNICA: Bari, AD SERVICE s.n.c., Via De Samuele Cagnazzi 12/A, Tel. 0801349902 - Bologna, GVH, Via Beverara 39, Tel. 051/370687 • TECNILAB, Via S. Croce 24, Tel. 051/236530 • Forli, PLAYER, Via Fili Val piani61A, Tel. 0543/36300· Milano, CRC ITALIA, Via Dario Papa 4/1, Tel. 02/6071515· Napoli, AMATISTA & CO., Via G. Carala 4, Tel. 081n804511 • Salerno, SACO ELETTRONICA, Via Maganario 65, Tel. 089/394901. Riparazioni entro 48 ore.


Recommended