Deze documentatie is zeer kort in vergelijking tot de aangesneden koek. De hardware wordt slechts kort besproken, zonder een uitgebreide bouwaanwijzing te presenteren. Het lijkt me dat voor de bouw van het systeem nogal wat kennis, handigheid, koppigheid enz. vereist is. Ondanks dit moet er met de hulp van iemand die het systeem al werkend heeft wel uit te komen zijn.
Naast de hardwarekennis veronderstel ik ook kennis van CP/M (Control Program Monitor (Microcomputer)), ÓDigital Research) operating-system, ZCPR2, ATOM-DOS en GDOS. Indien niet voorradig, lees dan een CP/M boek en loop eens langs bij een DOS-bezitter.
BASISOPZET
Sommige stukken tekst heb ik niet vertaald in het Nederlands. Deze tekst was al beschikbaar voordat ik deze handleiding ben gaan schrijven. Voor public domain CP/M software (waaronder ZCPR2 en P2DOS ! ) met handleidingen kan men bij de CP/M-gg terecht. De CP/M-gg is een onderdeel van de Hobby Computer Club (HCC). Zonder hulp van de leden van de afdeling Twente was dit project niet geworden tot wat het nu is. Met name ben ik de volgende mensen dank verschuldigd voor het ontwikkelen van de print: Rien Stoop, voor het tekenen van het schema, bouw proefmodel, vele correcties op de print layout. Fernando Monsanto, voor coördinatie print. Paul Klomp, voor bouw proefmodellen, correcties, tips, testen software, programmeren van vele eproms. Harm de Leeuw: opnieuw tekenen schema, komponenten opstelling en nummering. Jos Huisken, voor het beschikbaar stellen van zijn BIOS. Deze heeft als basis gediend voor de ontwikkeling van mijn software. Peter Huisken
Het Z80 kaartje is op de eerste plaats bedoeld om CP/M compatible software te kunnen draaien. Om dit zo goedkoop mogelijk, en toch goed, te realiseren kan men het beste gebruik maken van de interfaces die je al in je ACORN ATOM computer hebt ingebouwd. Ik noem een paar dingen als: 80 kolommen kaart, printerinterface en toetsenbord. Door nu de Z80 met een snelle interface aan te sluiten is het mogelijk om met een geschikt protocolletje alle informatie voor de verschillende interfaces heen en weer te sturen zonder dat dit ten koste gaat van de snelheid. Nu vraagt u zich misschien af waarom de disc controller niet in de ATOM is ingebouwd. Bij bijna alles wat er gebeurt onder CP/M wordt er disc-access gepleegd. Wanneer de disc interface in de ATOM wordt gebouwd wordt CP/M circa drie keer langzamer. Dit is niet acceptabel (vergelijk de Commodore). Aangezien er nu, weliswaar met omweg, een disc aan de ATOM hangt moet het ook mogelijk zijn om ATOM files op te bergen op schijf. Hiertoe moet de standaard DOS van de ATOM enigszins gewijzigd worden. In de plaats van de besturing van de 8271 floppy disc controller komt een communicatie programmaatje die via de Z80 disk-sectoren kan lezen en schrijven. Vanwege de extra communicatie wordt de dos bijna twee keer langzamer dan de standaard ATOM-DOS. Door de gebruikte constructie zijn alle faciliteiten van de standaard DOS aanwezig. Dit houdt in dat alle programma's gedraaid kunnen worden, m.u.v. die programma's die de 8271 FDC rechtstreeks aanspreken. Wat heeft men naast het Z80 kaartje nog nodig om het ten volle te benutten?
Naast bovengenoemde absoluut noodzakelijke systeem software worden de volgende programma's (voor gebruik onder CP/M) ook verspreid:
De genoemde NMOS chips worden bij elkaar gehouden door 18 TTL IC.s, een stel weerstanden, onstoringscondensatoren en een kristal. Ik zal nu enkele punten van het schema wat gedetailleerder bespreken.
AANSTURING VAN DE RAM EN BANKSWITGHING
Na een hardware reset begint de Z80 microprocessor instructies uit te voeren vanaf adres #0000. Het is noodzakelijk dat hier ROM aanwezig is zodat na power-up de machine kan opstarten. Een FLIP- FLOP van het type '74 (D11) zorgt ervoor dat na een reset de EPROM geselecteerd kan worden. De adresruimte 0000-7FFF Is dan voor de EPROM. Het gebied 8000-FFFF Is altijd bezet door RAM geheugen. Na opstarten van een programma kan de EPROM uitgeschakeld worden zodat de hele adresruimte bestaat uit RAM.
PARALLELLE INTERFACE
De flip-flop voor de bankswitching wordt bestuurd door een adres in de Input/Output Map aan te spreken. Door de Z80 een zogenaamde OUT- instructie te laten uitvoeren naar IO-adres 21 hex kan de EPROM uitgeschakeld worden. De vrijgekomen ruimte wordt dan ingenomen door RAM. Met een OUT- instructie naar adres 20 wordt de EPROM weer teruggeschakeld. Door deze constructie is het mogelijk om bepaalde standaard software op te slaan in de EPROM en toch de voordelen te hebben van 64K aaneengesloten RAM. De dynamische RAM ic’s hebben gemultiplexte adresingangen. De 16 adreslijnen van de Z80 worden gemultiplext met twee '157 (D29,30) ic's. Het een vertragingslijn opgebouwd uit 4 Inverters (D26) en een decoder (D23) (deze decoder wordt ook gebruikt voor het schakelen tussen Ram en EPROM) wordt op het juiste moment de Row Adress Strobe en Column Adress Strobe signalen aan het RAM gegeven. Een NAND-poort (D25) zorgt bij het schrijven in RAM voor verder vertragen van de CAS puls zodat er geen bus-conflicten optreden (lastig, bekijk dit maar eens in de Z80 documentatie). De EPROM heeft twee enable signalen namelijk nOE en nCE. De nCE wordt gebruikt om de chip ‘weg' te schakelen. De 27128 staat dan in 'standby mode'. De nOE wordt als normale chip select gebruikt. NOOT: Let op dat de adreslijnen van de dynamische RAM goed zijn aangesloten. De Z80 geeft op de adreslijnen A0-A6 na elke opcode- fetch een refresh adres af. Wanneer men bijvoorbeeld de aansluitingen A6 en A7 van de RAM verwisseld zal de refresh in bepaalde delen van de RAM uitblijven waardoor de meeste programma’s niet meer werken. Aangezien de Z80 maar 7 refreshbits afgeeft zal het meteen duidelijk zijn dat 8 bits refresh chips, zoals de Texas Instruments TMS4164 niet geschikt zijn. Ook de 64k*4 chips (41464) hebben 8 bits refresh nodig. Met een schakeling van 2 TTL-IGs is dit te realiseren. Voor mensen die geen gebruik maken van de print is dit een compacte oplossing.
De Z80 PIO chip ligt in de IO-map op de adressen 10-13. Deze chip kent een speciale mode die het mogelijk maakt met 12 draden data te ontvangen en te versturen (bidirectionele interface). Deze mode wordt gebruikt voor communicatie met de ATOM.
De overige IO-lijnen worden gebruikt voor de disk interface.
FLOPPYDISK INTERFACE EN CLOCK CIRCUITS
De PIO kan niet gebruikt worden voor bank-switching, omdat deze geen reset ingang heeft. Na vastlopen van een eens werkend programma zou dan de voeding aan en uit gezet moet worden om de EPROM weer voor te schakelen. Dit voorschakelen van de EPROM is namelijk noodzakelijk om de machine weer op te starten.
De Floppy Disk Interface is opgebouwd met een MB8877A of 1793 Floppy Disk Controller (FDC). Een MB8877A heeft geen 12V nodig zodat deze spanning dan niet meer nodig is op de print.
OMBOUWEN NAAR 8 MHz
De FDC ligt op adres 00, 01, 02 en 03 in de IO-map. De gebruikte FDC is geschikt voor single en double density op 5 of B inch disk drives. De hardware rond deze chip is zo ontworpen dat softwarematig omgeschakeld kan worden tussen alle vier mogelijkheden op elk van de vier drives. De dataseparator is opgebouwd met een teller van het type '193 (D9). Met behulp van een '153 (DB) multiplexer worden de juiste klokfrequenties voorgeschakeld, noodzakelijk voorde dataseparator en de FDC. Deze verschillende frequenties zijn afkomstig van een '393 (D7) teller. De write-precompensatlon (250 nS) is opgebouwd met een schuifregister van het type '195 (D10). Het een one-shot van het type '123 (D12) wordt een puls gegenereerd van een seconde om de motor van de diskdrive tijd te gunnen om op toeren te komen. De andere helft van dit IC wordt gebruikt in de dataseparator. De '145 (D2) wordt gebruikt om de drive select code op disc interface te zetten. Dit IC beschikt over de noodzakelijke open collector uitgangen. De uitgang DRQ {Data ReQuest) van de FDC hangt aan PB7 van de PIO. De CPU kan dan via de PIO zien wanneer de Floppy Disc Controller weer een byte klaar heeft (of nodig heeft in het geval van schrijven). De DDEN van de FDC wordt bestuurd met PB2 van de PIO. Met PB4 van de PIO wordt de side select van de disc drive gestuurd. Ook in geval van een 1797 disc controller moet PB4 gebruikt worden. Helaas wijst de praktijk uit dat SCHRIJVEN op 8 inch double density niet functioneert omdat de CPU de bytes net niet snel genoeg af kan leveren bij de FDC (het is moeilijk uit te leggen maar het lezen gaat wel goed). Door de processor-snelheid te verhogen naar 8 MHz Is dit probleem opgelost. Voor sommige 8" drives is de wrlte-precompensatlon aan de hoge kant. Door de clock-ingang van de 74LS195 aan 8 MHz te hangen in plaats van aan 4 MHz wordt de write-pre-comp 125 nS. Voor moderne slim-sline drives zoals Teac, Mltsublshi mag de write-pre-comp helemaal uitgezet worden. Dit gaat als volgt verwijder de 74Ls195 en soldeer de WD uitgang van de 179X direct aan de 7406. Aan de componenten zijde van de print loopt vanaf de zijkant een spoortje naar pin 4 van D7. U snijdt dit spoortje vlak bij het IC door en verbindt het met pin 3 van hetzelfde IC. Vervang, indien noodzakelijk, de volgende componenten:
In de praktijk blijkt dat 4164-150 van bekende merken goed functioneren. Z80 A PIO's van verschillende merken blijken ook op 8 MHz goed te werken. Voor de CPU is een 'B'-type vaak voldoende. Een uPD780-2 (6 MHz ) van fabrikaat NEC geeft echter zeer slechte resultaten.
UITZETTEN MOTOR ON/OFF
De EPROM geeft over het algemeen helemaal geen probleem. Meestal zijn de standaard types al 250 Ns.
Als uw drives voorzien zijn van een direct drive motor en 'head load' inrichting, dan kunt u overwegen de motoren van de drives continu te laten lopen. Dit is als volgt te realiseren:
Zorg voor voldoende afscherming bij montage dicht bij de disk drive. Bij montage direct op een disk drive zonder afscherming zal de instraling van de Z80 kaart zo groot zijn dat de drive niet functioneert. Disk drives hebben ook vaak last van instraling door monitoren en schakelende voedingen.
DE MEMORY HAP
De memory map ziet er na een reset als volgt uit:
0000-7FFF EPROM (er wordt een 16K EPROM gebruikt8000-FFFF Random Access Memory Als de EPROM is uitgeschakeld dan Is de map: 0000-FFFF RAM De EPROM kan worden ingeschakeld door naar IO-adres 20 een willekeurig byte te schrijven. Door naar IO-adres 21 te schrijven wordt de EPROM vervangen door het RAM. DE INPUT/OUTPUT ADRESSENINDELING
De Z80-kaart wordt met behulp van een VIA (6522) aangesloten aan de ATOM. Het standaardadres van deze VIA is #BF90.
In het onderstaande tijdvolgorde-diagrammetje (bron: ZILOG) is te zien hoe de PIO en 6522 communiceren. De volgende punten wil ik even benadrukken:
De bootrom voor het Z80-kaartje is van het type 27128 (16 Kb). In deze EPROM staat o.a. de software die na een reset geëxecuteerd wordt. Na reset of power-up gebeurt er het volgende:
Voor het draaien van CP/M software is een aan de hardware aangepaste Basic Input Output System (BIOS) noodzakelijk. Deze BIOS biedt het P2DOS gestandaardiseerde routines aan voor disk. terminal, printer etcetera. De BIOS voor het Z8O-kaartje kent ook nog de mogelijkheid om ' vreemde ' diskformaten in te stellen. Met het programma 'DCONF' wordt de BIOS intern verbouwd zodat allerlei formaten gebruikt kunnen worden. Nadat een drive voor een bepaald formaat is ingesteld kan met het 'FORMAT' programma een nieuwe schijf geformatteerd worden. Met het programma SYSGEN kan men op de systeemtracks van een geformatteerde floppy een BIOS zetten (alleen club-formaat! ). HET AANMAKEN VAN EEN BOOT FLOPPY VOOR P2DOS Om op de normale wijze ' koud ' te kunnen booten moet de eerste track van de boot-floppy single density geformatteerd zijn. Het FORMAT programma vraagt hierna (128 bytes per sector).
CONSOLE, LIST, PUNCH, READER input/ output.
Na het formatteren kan er een BIOS opgezet worden. Dit gaat m.b.v. het programma SYSGEN.COM. Met dit programma moet eerst een BIOS van een andere schijf gehaald worden, waarna het op de nieuwe schijf gezet kan worden. LET OP: Bij standaard CP/M staan ook de BDOS en CCP op de systeemsporen. Echter bij dit systeem worden deze delen uit EPROM gekopieerd en staan dus niet op disk! Zodoende kan toch 'warm' geboot worden op een floppy zonder systeem. Wil men wijzigingen aanbrengen in het OS dan moet de EPROM opnieuw gebrand worden. De I/0 van deze devices geschiedt 'op afstand' via de ATOM. Aangezien er slechts sprake is van 1 'half-duplex' verbinding tussen de Z8O-kaart en de ATOM moet er een eenvoudig protocolletje gebruikt worden om de boel uit elkaar te houden. Dit protocolletje werkt als volgt: Van Z8O-kaart naar ATOM:
Dankzij een goede implementatie van de printerstatus kan met een bekend tekstverwerking programma tegelijk ge-edit en geprint worden. Wie heeft er nu nog een printer-buffer nodig?
DE GEWIJZIGDE ACORN ATOM DOS
Vanwege de eenvoudige directory structuur van de ATOM-dos is het zeer eenvoudig en slechts weinig langzamer om de disc input/ output op afstand te laten gebeuren. Een file op een ATOM disc is een aaneengesloten rij van sectoren. Wanneer er een file in de ATOM geladen moet worden hoeft de ATOM alleen maar het sectoradres en het aantal sectoren bekend te maken aan de Z80. De Z80 laadt dan eerst de gewenste sectoren in het eigen werkgeheugen, waarna de hele hap met een snelheld van circa 10.000 bytes per seconde naar de ATOM wordt gestuurd. Op de plaatsen in de oude DOS-ROM waar een aantal sectoren gelezen of geschreven moet gaan worden, wordt een sprong gezet naar de vervangende software die de taak uitbesteedt aan de Z80. Aangezien er maar twee mogelijkheden zijn (lezen en schrijven) is het patchen eenvoudig (dankzij ATOMWARE deel 2). Uiteraard wordt ook het drivenummer opgegeven aan de Z80. Nu is het de ATOM om het even of er nu echt een ATOM schijf in de disc drive zit, of dat de Z80-kaart een ATOM schijf SIMULEERT. Men kan onder CP/M bijvoorbeeld een file van 100 kilobyte aanmaken. Alle lees en schrijf operaties kunnen dan worden gesimuleerd met deze file. Met een grote disc drive kan men 7 files van 100Kb aanmaken zodat 7 oude ATOM schijven passen op 1 CP/M schijf (er is nog ruimte voor een 'floppy' van 76 Kb). Voor dit simuleren is een CP/M programma 'ATOMDOS' beschikbaar. Aan de hand van het ingestelde discnummer (in de ATOM) wordt de juiste file geselecteerd waarop de lees en schrijf operaties moeten worden uitgevoerd. De files van 100Kb kunnen worden aangemaakt met 2 programma's:
Voor het aanmaken van een dos-rom is het volgende noodzakelijk:
Nu nog eventjes in een EPROM zetten. HET GEBRUIK VAN ATOM DOS
De nieuwe ATOM-DOS is compatible met de oude. Alle min meer normale entrys zijn gelijk gebleven. Incompatibiliteit treedt zeker op wanneer een programma rechtstreeks gebruik maakt van de 8271 FDC.
De volgende programma's commando's werken dus niet:
Bovendien worden sommige foutmeldingen niet gegeven. Indien een schijf write-protected is, wordt er bij het schrijven niet gereageerd met een foutmelding. Ook een BAD sector wordt niet gerapporteerd (vastloper). Op de redenen hiervan ga ik niet verder in.
Alle andere faciliteiten werken wel. Ik noem o.a. :
DISK NUMMERING Bij gebruik van standaard ATOM single density floppies Is DRIVE nummering als volgt:
HET AANMAKEN VAN EEN ATOM FLOPPY
Het aanmaken van een ATOM floppy is niet eenvoudig. Voor aanmaken van een standaard single density floppy gaat men beste als volgt te werk:
Met een truuk Is het bovenstaande ook uit te voeren met slechts 1 drive:
Sluit In drive A ook de jumper voor drive B select aan. De drive werkt nu als drive A en B. Met enkele keren verwisselen van schijven is het dan mogelijk vreemde formaten te formatteren.
De net geformatteerde schijf staat nu vol met bytes #E5. De directory is dus nog niet geinitialiseerd. Start de ATOM met ATOMDOS op. Gebruik nu het ATOM-programma INITDIR om de net geformatteerde schijf te voorzien van een lege directory. Wil men het programma ATOMDOS gebruiken voor het verkrijgen van meer opslagcapaciteit dan is het aanmaken nog ingewikkelder. Allereerst moet een floppy geformatteerd worden voor CP/M (eerste track single density). Vervolgens moet er een speciale BIOS opgezet worden m.b.v. SYSGEN (een BIOS zonder protocollje voor een printer etc.). Deze BIOS zorgt voor het automatisch opstarten van het programma ATOMDOS {moet er ook opgezet worden). M.b.v. het programma CREATE of AACOPY moeten er nog ATOMDOS.00? files gemaakt worden. Gebruikt men het programma CREATE dan kan men een afwijkende grootte instellen. Neem bijvoorbeeld meer dan 100Kb als er grote files in moeten, neem minder dan 100Kb indien er bijv. 31 'one-liners' op moeten. Men is dan wat betreft disc-cap. niet meer compatible. Met AACOPY kunnen dan geen floppies meer uitgewisseld worden.
PAS OP: Bij het gebruik van standaard ATOM-floppies hoeft de Z80- kaart slechts 1 keer gereset te worden {met de ATOM-floppy in de drive). Bij het verwisselen van 'simulatie'-floppies is de kans groot dat een floppy de zogenaamde 'Read Only' status krijgt. Een schrijf-poging resulteert dan in het vastlopen van de ATOM-dos. Om dit te voorkomen moet men bij verwisselen van 'simulatie'- floppies een reset geven aan de Z80-kaart. Door de ‘simulatie'- floppies 'gestandaardiseerd' aan te maken worden ook de 'R/O' errors vermeden. Aan de volgende eisen moet voldaan zijn:
De directory van de CPIM floppies moet exact hetzelfde zijn om bij verwisseling geen 'R/O' status te veroorzaken.
HET OPSTARTEN VAN ATOMDOS
Stop een atomfloppy in de drive. Reset vervolgens de Z80 kaart. Tik dan op de ATOM in: *DOS. De DOS moet dan werken.
Gebruikt men standaard ATOM 100Kb schijven dan hoeft de Z80 kaart niet opnieuw gereset te worden bij het verwisselen van schijven. Bij gebruik van gestandaardiseerde simulatie floppies is de reset bij floppy-wissel ook overbodig.
Na elke reset van de Z80 kaart moet op de ATOM opnieuw *DOS ingetikt worden. GDOS MET DE Z80 KAART
De 'namaak' -GDOS is wat betreft commando's en OS-calls geheel compatible met het origineel. De volgende veranderingen zijn merkbaar voor de gebruIker:
HET OPSTARTEN VAN GDOS
TERMINAL SOFTWARE Deze terminal software is noodzakelijk voor het draaien van CP/M,Er zijn drie versies beschikbaar:
Alle I/0 voor CP/M (behalve disk I/O ) wordt via de ATOM gedaan. De terminal bevat o.a. de volgende delen:
HET AANPASSEN VAN DE TERMINAL
Bij het aanpassen van de terminal is kennis van de geheugenindeling van de betreffende ATOM noodzakelijk. De volgende adressen kunnen (moeten) aangepast worden:
MINIMALE TERMINAL
In het Acorntjedbrood nr. 5.2 is een zeer minimale terminal gepubliceerd door Paul Klomp. Deze laat zich snel intikken en is dus geschikt voor testdoeleinden.
APPENDIX A: STEPRATE PATCHES
Op de hieronder genoemde adressen mag men alleen de volgende waarden invullen:
In de EPROM staan op de volgende adressen de steprates gedefinieerd: 0D1F en 381F. Op 0D1F staat de steprate die gebruikt wordt bij reset en ATOMDOS. Voor GDOS ondersteuning staat de steprate op adres 381F.
In de programma's SYSGEN en RSECT moet men adres 0102 (na laden met ZSID) wijzigen. Na wijzigen met SAVE commando weer wegschrijven.
In het programma AACOPY moet adres 300C gewijzigd worden.
Alle bovengenoemde adressen bevatten 00. De steprate is dus 6 Ms.
APPENDIX B: HET PATCHEN VAN DE BIOS
Voor het veranderen van de drive-instellingen is nogal wat handigheid nodig. Ik volsta met het geven van een paar voorbeelden.
Voorbeeld 1) Drive A en B zijn dubbelzijdige 40 track drives.
Voor drive B: komt een dubbelzijdige 80 track drive in de plaats. Hoe moet nu de BIOS gewijzigd worden zodat drive B: een capaciteit krijgt van 790 Kb? Ga als volgt te werk:
De verspreidde BlOSsen zijn al ingesteld op dit type drives (drive C en D). De opslagcapaciteit bedraagt 1440 Kb per schijf. M.b.v. het drive-volgorde tabelletje kan men de drive ook als drive A laten werken zonder jumpers om te zetten in de drive. Wil men zonder gebruik van de drive tabel zo'n drive als drive A gebruiken, dan moet de source van de BIOS gewijzigd worden. Verander bijv. de tabel naar 02 03 00 01. De al aanwezige 5" drive werkt nu als drive C. Let wel op: de programma's RSECT en SYSGEN kijken niet naar deze tabel. Noot: Voor TEAC G modellen moet de write prec. uitgezet worden. Mijn YE-DATA drives, model YD38OT, vereisen wel precomp. PATCHTABEL VOOR DE BIOS ; head load time 50 ms EE3C 3C hl.time: db 60 ; head settIe time 25 ms EE3D 1E hs.time: db 30 ; drive redefinition table EE3E 00 01 02 03 dr.tab: db 0,1,2,3 ; see zcpr2 manual EE42 01 00 00 00 PATHINIT: db 1,0, 0,0 EE46 00 00 00 00 db 0,0, 0,0 EE4A 00 db 0 ; type of the selected drive ; bit 0,1 steprate 3, 6, 10, 15 Ms ; bit 2: doubles steprate ; bit 3: 0 ; bit 4: 0 40(77) 1 80 trk ; bit 5: 0 single 1 double side ; bit 6: 0 mini 1 maxi floppy ; bit 7: 0 EE6A 30 A.TY.DRV: DB 30H ; 5" DS 80-TRK EBB4 30 B.TY.DRV: DB 30H ; TEAC F EEFE 70 C.TY.DRV: DB 70H ; 8" DS 80-TRK EF48 70 D.TY.DRV: DB 70H ; TEAC G Enkele voorbeelden van drive types ; 07h voor 5" SS 40 trks, 30 Ms steptime (hele oude Shugarts) ; 21h voor 5" DS 40 trks, 6 Ms steptime (TEAC B) ; 40h voor 8" SS 77 trks, 3 Ms (standaard 8") ; 60h voor 8” DS 77 trks, 3 Ms (dubbelzijdig 8") APPENDIX C: 6845 EN EF9345 TERMINAL Bell ^G Right ^L Backsp/left ^H Carriage return ^H Tabulate ^I Clrscreen, home ^Z LF/down ^J Home ^^ Up ^K Delete #;F Normal video ESC ( Low Video ESC J Clear screen ESC * Char insert ESC Q Char delete ESC W Line insert ESC E Line delete ESC R Clear end of line ESC T Clear end of screen ESC Y Set cursor pos ESC *line+20H column+20H Terminal reset ESC 00H Auto LF on ESC 01H Program function key nr ESC 06H nn ss text ss Define scroll window ESC 0DH tt bb Auto LF off ESC 0EH Erase to eol with CR on ESC 0FH Erase to eol with CR off ESC 10H Set cursor display ESC 13H nn (6845) Poke ln CRTC or DP ESC 16H rr dd Ask for the contents of key nn ESC 17H nn terminal returns: ESC 17H nn FFH text FFH Set line-editing cursor keys ESC 18H Set ‘wordstar' cursor keys ESC 19h Set dim/ underline/ blink/ inverse ESC G 4/ 5/ 6/ 7 (EF9345) Reset attributes ESC G 0/ 1/ 2/ 3 (EF9345) Special keyboard functions: ^O terminal reset ^4 on-line ^1 clock off (6845 terminal) ^5 local ^2 clock on ( " ") ^6 CP/M cursor & function keys ^3 not used ^7 WS cursor & function keys Function key numbers: @ 0 RETURN 32 (Add 8 if shifted) A-Z 1-26 DELETE 33 (Add 8 if shiftedJ [ 27 COPY 34 (Add 8 if shifted) \ 28 curs R-L 35 (Add 8 if shifted) ] 29 curs U-D 36 (Add 8 if shifted) ^ 30 Note: When the first char of a programmed key is a ^@ (00H) APPENDIX D: STANDAARD TERMINAL Bell ^G Backspacelleft ^H Tabulate ^I Linefeed/down ^J Up ^K Right ^L Carriage return ^M Clear screen, home ^Z Home ^^ Clear screen ESC * Set cursor pos ESC. * line+20H column+20H Terminal reset ESC 00H Auto LF on ESC 01H Auto LF off ESC 0EH Program function key nr nn ESC 06H nn ss text ss Ask for the contents of key nn ESC 17H nn terminal returns: ESC 17H nn FFH text FFH Set line-editing cursor keys ESC 18H Set 'wordstar' cursor keys ESC 19h Clear graphics screen ESC 1BH mode Plot (modes same as in atom) ESC 1CH mode xl xh yl yh Special keyboard functions: ^O terminal reset ^4 on-line ^1 clock off (6845 terminal! ^5 local ^2 clock on ( " ") ^6 CP/M cursor & function keys ^3 ot used ^7 WS cursor & function keys Function key numbers: @ 0 RETURN 32 (Add 8 if shifted) A-Z 1-26 DELETE 33 (Add 8 if shiftedJ [ 27 COPY 34 (Add 8 if shifted) \ 28 curs R-L 35 (Add 8 if shifted) ] 29 curs U-D 36 (Add 8 if shifted) ^ 30 Note: When the first char of a programmed key is a ^@ (00H) then APPENDIX E: MONITOR COMMANDO'sA Werkt niet. B Invoer blokkeren (nuttig ??). Opheffen met ctrl-^ C Werkt niet. D <beginadr>,<eindadres> Hexadecimale dump van het geheugen E Genereert INTEL-hexformaart EOF. F <beginadres>,<eindadres>,<waarde> Vult geheugen met konstante waarde G <adres>[ ,<breakl>[ ,<break2>]] Start programma. Er kunnen 2 breakpoints opgegeven worden. Voor gebruik eerst I - register mbv ‘X' op #FF zetten. H <x><y> Berekent som en verschil van x en y. I Kopieert standaard BIOS uit EPROM. J Eenvoudige geheugen-test. Inhoud wordt niet veranderd. M <beginadres>,<eindadres>,<dest.adres> Intelligent verplaats commando. N Werkt niet. P<adres> Invoer van text van keyboard naar adres. Met '-‘ kan laatste teken gewist worden. Afsluiten met ctrl-D. QI<poortadres> Uitlezen IO-poort. QO<prtadres>,<waarde> Schrijven naar IO-poort R[<bias>[ ,<reladres>]] Inlezen INTEL hex-files over keyboard. S<adr> Modificeren van geheugen.
De restart kan goed gebruikt worden om uit een testprogramma weer in de monitor te komen.
Met het ‘X’ commando kan men dan de registers bekijken.
APPENDIX F: ZCPR2 COMMANDS: DU: The DU form standing alone is used to log into a different directory. There are three basic forms of this command -- Change Disk D: Change User U: Change Disk and User DU: A file may be preceded by DU: to indicate the disk and user. DIR Display files. Display $DIR File Names DIR DU : afn Display $SYS File Names DIR DU : afn S Display All File Names DIR DU : afn A ERA Erase files. Erase Specified Files ERA DU : afn Erase with Verify ERA DU : afn V REN Rename file. Rename File REN DU : ufn1=ufn2 TYPE Type file on screen. Type File Without Paging TYPE DU : ufn P Type File With Paging TYPE DU : ufn LIST List file on Printer. List File With Paging TYPE DU : ufn SAVE Save the contents of the TPA. Save Hemory into File SAVE n DU:ufn Save Memory into File SAVE n DU:ufn s n may be decimal (default) or hexadecimal (followed by "H"). When the S option is specified, n refers to the number of 128 bytes blocks instead of 256 byte pages. GET Load a file into memory. Load File Into Memory GET adr DU:ufn Adr must be hexadecimal GO Reexecute the last program loaded. Reexecute Last Transient GO params JUMP Branch to anywhere in memory. Call Subroutine JUMP adr Adr must be hexadecimal. The following facilities are enabled: -searchpath for *.COM files at address 0040H -standard CP/M submit !$$S.sUB). -Multiple command line buffer at address FB40H APPENDIX G: ATOMDOS commando’s *CAT inhoud schijf *DELETE delete een file *DIR laden directory *DRIVE specificeren drive *EXEC vergelijk submit bij CP/M *GO ?? *INFO informatie van een file *LOAD van een file *LOCK beschermen tegen wissen of schrijven *MON enable meldingen *NOMON disable meldingen *RUN laden en runnen *SAVE saven file *SET setten qualifier *SHUT sluiten file(s) *SPOOL uitvoer op beeldscherm ook naar file *TITLE wijzigen titel van een disk *UNLOCK file wordt weer Read/Write *USE s etten qualifier ? LISTING PATCH PROGRAMMA 100 PROGRAM D-PATCH-salfaa 110 120 REM DOS patchen voor bidirectionele 1/0 Z80-kaart 130 REM gebruikt salfaa V1.5 140 REM voor schema V1A-P10 d.d. maart 1986 150 REM verwacht ACDOS / DECADOS op #6000 160 170 PASS2;GOSUBa 180 PASS1;GOSUBa 190 END 200 210a ASM-B 220 .TABLE#9800,#9FF0 230 .LIST 240 .OPT #40 \ P-Charme uit 250 260:via=#B400 270 280 .CODE #E000;.RAM #6000; NOP \voorafje 290 300 .CODE #E000;.RAM #6000 310 LDA @#FF;STA via+12 320 LDA @#FF;STA via+12 , \opvullen ruimte 330 340 .CODE #E112;.RAM #6112 350:sect 360 LDA @#FF;CLC;ADC #AO;LDA #Al;ADC @0;STA #CB 370 LDA @#13;JSR put’byte 380 LDA #A3;JSR put’byte;LDA #A2;AND @#F;JSR put’byte 390 LDA @#0E;JSR put’byte;LDA #CB;JSR put’byte 400 LDA #9C;STA #F6;LDA #9D;STA #F7;RTS;RTS;RTS 410 420 .CODE #E220;.RAM #6220 430 JHP #FFED;JSR #E731 440 NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP 450 460 .CODE #E4A3;.RAM #64A3 470 NOP;NOP;NOP;LDA @#00 480 STA #AD;JSR sect 490:label 500 JSR dsk’nr;JSR read’wr;te;LDA #CB;BEQ done 510:rept 520 JSR get’put;INY;BNE rept;INC #F7;DEC #CB;BNE rept 530:done 540 RTS 550 560 .CODE #E6B0;.RAM #66B0 570 NOP;NOP;NOP 580 590 .CODE #E6FF;.RAM #66FF 600 RTS . 610 620:init 630 JSR vreet;LDA @#DD;STA via+12;LDA @#FF;STA via+12 640:vreet 650 BIT via+O;BVC klaar;JSR get’byte;JSR #FE66;JMP vreet 660:klaar RTS 670 680 .CODE #E731;.RAM #6731 690 LDA @#00;JMP motor 700 710 .CODE #E74A;.RAM #674A 720 LDA @#4B;JMP motor 730 740 .CODE #E75B;.RAM #675B 750 RTS , \start motor 760:motor 770 STA #AD 780 LDA @#13;JSR put'byte;LDA @o;STA #F6;JSR put’byte;JSR put’byte 790 LDA @14;JSR put'byte;LDA @2;STA #CB;JSR put’byte 800 LDY @#20;STY #F7;JMP label 810:get'put 820 BIT #AD;BVC get 830 LDA (#F6),Y;JMP put’byte 840:get JSR get'byte;STA (#F6),Y;RTS 850 860:get.byte 870 BIT via+O;BVC get.byte 880 LDA @#FD;STA via+12;LDA via+1;PHA 890 LDA @#FF;STA via+12;PLA;RTS 900 910:put'byte 920 BIT via+0;BPL put'byte;STA via+1;PHA 930 LDA @#FF;STA via+3 940 LDA @#DF;STA via+12;LDA @#FF;STA via+12 950 LDA @#00;STA via+3;PLA;RTS 960 970:dsk’nr \ stel disknummer in 980 LDA @#04j;JSR put’byte;LDA #EE;AND @#07 990 ORA @#30;JMP put’byte 1000 1010:read’write \ stuur read/write-commando 1020 JSR vreet;LDA @#17;BIT #AD;BVS put;LDA @#12 1030:put 1040 LDY @0;JMP put’byte 1050 1060 .CODE #EF13;.RAM #6F13 1070 JMP init 108O 1090 .END 1100 ?#643C=#38;?#6440=7;REM DISK 0. .7 1110 RETURN |