@@@@@@@@@@@@@@@@ ~HELPTEXT versie 4.00 3 januari 1998 (c) 1995-1998 `Pascalle en `Roland Leurs De help-functie maakt gebruik van twee datafiles; ATOMHELP.IDX en ATOMHELP.TXT Deze laatste file kunt u met een normale ascii teksteditor zelf uitbreiden. Plaats het sleutelwoord aan het begin van de regel, vooraf gegaan door een golfje. Achter het sleutelwoord moet minstens 1 spatie staan. In de tekst kunnen andere trefwoorden worden voorafgegaan door een achter- waards accent. Deze trefwoorden verschijnen dan in een andere kleur. Na het wijzigen van de helptekst moet de indexfile opnieuw aangemaakt worden. Verwijder de oude ATOMHELP.IDX en laat het programma MAKEHELP even lopen. In de helptekst ziet u op de bovenste regel 16 @ staan. Deze niet verwijderen! ~OSBYTE#00 druk o.s. versie nummer af invoer : geen uitvoer: geen gewijzigde registers: geen ~OSBYTE#01 test escape toets invoer : geen uitvoer: zero vlag = 1 -> escape gedrukt zero vlag = 0 -> geen escape Accu = key scan code gewijzigde registers: Accu Opmerking - deze aanroep kan ook gebruikt worden voor een snelle keyboard scan. De toetscode staat immers in de accu. ~OSBYTE#02 initialiseer alternatieve graphics mode invoer : X = alternatieve mode uitvoer: error 129 bij verkeerde mode gewijzigde registers: vlaggen ~OSBYTE#03 initialiseren/opvragen VDU mode invoer : X = 0 -> opvragen vdu mode X <> 0 -> init vdu mode uitvoer: carry = 0 -> alles in orde, X = mode carry = 1 -> illegale mode opgegeven gewijzigde registers: X en vlaggen ~OSBYTE#04 wacht op PC timertick invoer : geen uitvoer: geen gewijzigde registers: geen Opmerking - deze aanroep wacht ongeveer 1/18 seconde en wordt o.a. gebruikt bij het wachten op de flyback op adres #FE66. ~OSBYTE#05 produceer geluid invoer : X = frequentie Y = duur in 18e seconden uitvoer: geen gewijzigde registers: geen ~OSBYTE#06 spring naar exit vector invoer : geen uitvoer: onbepaald gewijzigde registers: onbepaald ~OSBYTE#07 opvragen/wijzigen exit vector invoer : X = 0 -> opvragen exit vector X <> 0 -> wijzig exit vector naar XY uitvoer: X = high byte exit vector Y = low byte exit vector Gewijzigde registers: X en Y ~OSBYTE#08 opvragen processor gegevens invoer : geen uitvoer: accu bevat volgende informatie: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ '0' '1' ³ ³ ³ ³ ³ ³ ³ ÀÄÄ 6502 65C02 0 0 0 0 0 0 ÀÄÄÄÄÄ 1 MHz 2 MHz gewijzigde registers: Accu en vlaggen ~OSBYTE#09 instellen van pieptoon $7 invoer : X = frequentie Y = duur in 18e seconden uitvoer: geen gewijzigde registers: geen ~OSBYTE#0A reset semafoor voor PC communicatie invoer : geen uitvoer: geen gewijzigde registers: geen ~OSBYTE#0B test en set semafoor voor PC communicatie invoer: geen uitvoer: carry = 0 -> toegang tot PC geweigerd carry = 1 -> toegang tot PC toegestaan gewijzigde registers: vlaggen Als toegang tot de PC gegeven is, wordt voor andere aanvragers automatisch de toegang geweigerd. Na het be‰indigen van de betreffende routine moet de semafoor gereset worden met OSBYTE #0A. ~OSBYTE#0C wek foutmelding op invoer : X is errorcode uitvoer: aanroep brkvector #202 gewijzigde registers: alle ~OSBYTE#0D druk tekst van foutmelding af invoer : foutcode in adres #00 uitvoer: foutmelding door PC op scherm gewijzigde registers: alle ~OSBYTE#0E keyboard scan invoer : geen uitvoer: accu = keyboard status X-register = ascii waarde Y-register = scan code Bit 1 van de accu geeft aan of er een toets ingedrukt is. Alleen in dat geval bevatten X en Y zinnige informatie. De afzonderlijke bits van de keyboard status hebben de volgende betekenis: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ 1 = toets gedrukt ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ 1 = shift-toets in ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ 1 = ctrl-toets in ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ 1 = alt-toets in ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = scroll-lock aan ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = num-lock aan ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = caps-lock aan ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = ins mode aan ~OSBYTE#F0 XMS versie opvragen invoer: geen uitvoer: A=aantal xms pagina's X=versienummer Y=releasenummer ~OSBYTE#F1 XMS pagina voorzetten (no save) invoer: Y=pagina nummer uitvoer: geen Bij dit commando wordt de huidige pagina niet opgeslagen in xms geheugen. ~OSBYTE#F2 XMS pagina voorzetten (no load) invoer: Y=pagina nummer uitvoer: geen Bij dit commando wordt de nieuwe pagina niet gelezen in het atomgeheugen. ~OSBYTE#F3 XMS pagina voorzetten invoer: Y=pagina nummer uitvoer: geen De huidige pagina wordt opgeslagen in het xms geheugen en de nieuwe pagina wordt in het atomgeheugen gelezen. ~OSBYTE#F4 XMS paginaframe instellen/opvragen invoer: Y=hoge byte paginaframe uitvoer: Y=hoge byte paginaframe Het paginaframe is 16 kb groot en kan liggen tussen #2000- #9FFF; de parameter voor deze functie ligt in het bereik #20...#60. Bij een ongeldige parameter wordt de functie niet uitgevoerd, alleen wordt het huidige frame teruggemeld. Na een reset staat het frame op #4000. ~PCCOM#00 Druk $0 af Invoer: geen Uitvoer: geen ~PCCOM#01 Keyboard scan Invoer: geen Uitvoer: scan code (1 byte) keyboard status (1 byte) De scan codes zijn niet gelijk aan de standaard PC- scancodes. Deze codes worden door de Atom als index gebruikt om de bijbehorende ascii waarde te bepalen uit een tabel. Als u gebruik wil maken van keyboard codes wordt commando #3A aanbevolen; daarmee zijn ook functietoetsen uit te lezen. De keyboard status bits hebben de volgende betekenis: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ toets gedrukt ³ ³ ³ 0 0 0 0 ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ alt toets gedrukt ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ctrl toets gedrukt ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ shifttoets gedrukt Door de Atom wordt de TAB toets gebruikt als COPY toets. ~PCCOM#02 Lees karakter op cursorpositie Invoer: geen Uitvoer: ascii waarde van teken op cursorpositie Wordt o.a. gebruikt bij afhandeling van copy toets. ~PCCOM#03 Plot pixel Invoer: X-co”rdinaat (1 word) Y-co”rdinaat (1 word) Plot mode (1 byte) Uitvoer: geen De co”rdinaten zijn afhankelijk van de grafische resolutie van de videokaart. Voor Hercules is dat 720*348 en voor CGA is dat 640*200. Dit commando voert een bewerking uit met het opgegeven pixel. Deze bewerkingen zijn: mode = 1 -> zet pixel mode = 2 -> inverteer pixel mode = 3 -> wis pixel ~PCCOM#04 Initialiseer grafische mode Invoer: geen Uitvoer: geen Dit commando schakelt de videokaart om naar de grafische mode. Voor EGA/VGA kaarten wordt de CGA mode ingeschakeld met een resolutie van 640*200. ~PCCOM#05 Plot pixel in clear 4 co”rdinatenstelsel Invoer: X-co”rdinaat (1 word) Y-co”rdinaat (1 word) Plot mode (1 byte) Uitvoer: geen De co”rdinaten zijn in dit geval gelijk aan de grafische resolutie van de Atom (256*192). Verder is dit commando hetzelfde als #03. mode = 1 -> zet pixel mode = 2 -> inverteer pixel mode = 3 -> wis pixel ~PCCOM#06 Ramfont laden Invoer: filenaam van het ramfont als ASCIIZ string Uitvoer: errorcode De naam van het te laden font wordt als ascii string overgestuurd. Deze string eindigt met de code #00. De filenaam mag een kompleet pad bevatten maar geen wildcards (* of ?). Als het font geladen is, is de errorcode #00. Als een fout opgetreden is (bijv. font niet gevonden) dan duidt de uitvoer de aard van de fout aan. ~PCCOM#07 Schrijf string in grafische mode Invoer: X-co”rdinaat (1 word) Y-co”rdinaat (1 word) ASCIIZ string Uitvoer: geen De opgegeven string wordt geplot vanaf de co”rdinaten X en Y. ~PCCOM#08 Zet horizontale en vertikale schaalfactor Invoer: horizontale schaalfactor (1 byte) vertikale schaalfactor (1 byte) Uitvoer: geen De horizontale en vertikale schaalfactoren bepalen de afmetingen van de karakters die met commando #07 worden afgedrukt. ~PCCOM#09 Zet cursor aan Invoer: geen Uitvoer: geen De cursor verschijnt als knipperend streepje op het scherm. ~PCCOM#0A Zet cursor uit Invoer: geen Uitvoer: geen De cursor verdwijnt van het scherm. ~PCCOM#0B File van disk laden Invoer: filenaam als ASCIIZ string Uitvoer: errorcode, bloklengte(n) en data Als de PC de filenaam ontvangen heeft wordt de file geopend. Als dit lukt wordt de errorcode #00 (geen error) teruggestuurd. Vervolgens wordt een datablok van max. 255 bytes gelezen. De lengte van dit datablok wordt naar de Atom gestuurd, direct gevolgd door de data. Als het einde van de file bereikt is dan ontvangt de Atom een filelengte van #00. ~PCCOM#0C File naar disk schrijven Invoer: filenaam als ASCIIZ string bloklengte(n) data Uitvoer: errorcode De PC leest de filenaam en probeert de file te openen. Als de file reeds bestond dan wordt deze overschreven (zonder vermelding). Als de file nog niet bestond dan wordt deze aangemaakt. Als de file geopend is wordt het resultaat overgestuurd naar de Atom; errorcode #00 geeft aan dat er geen fout opgetreden is. Daarna begint de data-overdracht. Eerst geeft de Atom de bloklengte, direct gevolgd door data. Als een blok overgestuurd is van Atom naar PC en het blok is naar disk geschreven dan meldt de PC het aantal geschreven bytes naar de Atom. Als dit niet gelijk is aan de bloklengte dan is de disk vol. Als de PC een bloklengte #00 ontvangt wordt de file gesloten. ~PCCOM#0D Disk catalog op scherm afbeelden Invoer: zoekpad/filespec als ASCIIZ string Uitvoer: geen De PC leest de filespecificatie, deze mag een drive, directory en een file-aanduiding met wildcards bevatten, en drukt deze op het scherm af. De uitvoer wordt door de PC direct op het scherm gezet en komt niet ter beschikking van de Atom. Een lege string wordt behandeld als *.* Hidden files worden niet op het scherm weergegeven. ~PCCOM#0E Veranderen/opvragen van huidige directory Invoer: nieuwe directory als ASCIIZ string Uitvoer: foutcode huidige directory als ASCIIZ string Dit commando verandert van directory naar de opgegeven directory. Als er geen fout opgetreden is, wordt de foutcode #00, gevolgd door de actuele directory als ASCIIZ string naar de Atom gestuurd. Als de foutcode niet #00 is, dan volgt er geen ASCIIZ string. ~PCCOM#0F Verwijder directory Invoer: te verwijderen directory als ASCIIZ string Uitvoer: foutcode lege ASCIIZ string De opgegeven directory wordt indien mogelijk van de disk verwijderd. Als dat gelukt is dan volgt nogmaals een #00 byte na de foutcode. Als de foutcode niet #00 is, dan volgt er geen ASCIIZ string. ~PCCOM#10 Maak directory aan Invoer: aan te maken directory als ASCIIZ string Uitvoer: foutcode lege ASCIIZ string De opgegeven directory wordt indien mogelijk op de disk aangemaakt. Als dat gelukt is dan volgt nogmaals een #00 byte na de foutcode. Als de foutcode niet #00 is, dan volgt er geen ASCIIZ string. ~PCCOM#11 Verwijder file van disk Invoer: filespec als ASCIIZ string Uitvoer: foutcode Deze functie verwijdert de opgegeven files van disk, mits deze niet Read-Only en/of Hidden zijn. Als er geen files gewist kunnen worden dan is de foutcode niet gelijk aan #00. Als er ‚‚n of meerdere files gewist zijn, dan is de foutcode #00. De filespecificatie mag geen drive en directory bevatten, eventueel wel wildcards. ~PCCOM#12 Lock files Invoer: filespec als ASCIIZ string Uitvoer: foutcode Deze functie zet van de opgegeven files het Read-Only bit. Als er geen files gelocked kunnen worden dan is de foutcode niet gelijk aan #00. Als er ‚‚n of meerdere files gelocked zijn, dan is de foutcode #00. De filespecificatie mag bestaan uit een drive, directory en wildcards. ~PCCOM#13 Unlock files Invoer: filespec als ASCIIZ string Uitvoer: foutcode Deze functie reset van de opgegeven files het Read-Only bit. Als er geen files geunlocked kunnen worden dan is de foutcode niet gelijk aan #00. Als er ‚‚n of meerdere files geunlocked zijn, dan is de foutcode #00. De filespecificatie mag bestaan uit een drive, directory en wildcards. ~PCCOM#14 Verander actuele drive Invoer: drive nummer (1 byte) Uitvoer: geen Met dit commando kan de actuele drive gewijzigd worden. Voor drive A: is het drivenummer 0, drive B: is drive nummer 1 etc. Er is geen terugmelding en controle op geldigheid van het drive nummer. ~PCCOM#15 Ga naar MS-DOS Invoer: geen Uitvoer: geen Dit commando be‰indigt het Atom terminal programma op de PC en de besturing wordt teruggegeven aan het oproepende programma. Voordat dit commando wordt uitgevoerd dienen geopende bestanden eerst gesloten te worden. ~PCCOM#16 Maak file verborgen Invoer: filespec als ASCIIZ string Uitvoer: foutcode Deze functie zet van de opgegeven files het Hidden bit. Als er geen files verborgen kunnen worden dan is de foutcode niet gelijk aan #00. Als er ‚‚n of meerdere files verborgen zijn, dan is de foutcode #00. De filespecificatie mag bestaan uit een drive, directory en wildcards. ~PCCOM#17 Maak files weer zichtbaar Invoer: filespec als ASCIIZ string Uitvoer: foutcode Deze functie reset van de opgegeven files het Hidden bit. Als er geen files zichtbaar kunnen worden gemaakt dan is de foutcode niet gelijk aan #00. Als er ‚‚n of meerdere files zichtbaar gemaakt zijn, dan is de foutcode #00. De filespecificatie mag bestaan uit een drive, directory en wildcards. ~PCCOM#18 Opvragen file informatie Invoer: filenaam als ASCIIZ string Uitvoer: foutcode file header (16 bytes) attribuut ( 1 byte) tijd en datum van laatste schrijfopdracht De opgegeven file wordt gezocht en indien gevonden wordt de file header overgestuurd naar de Atom. Bij succes is de foutcode #00. De fileheader bevat de volgende informatie: - load adres van file, twee bytes - exec adres van file, twee bytes - dataveld lengte, vier bytes - gereserveerd, acht bytes Aangezien de header in de file zelf is opgeslagen, is de totale file lengte zestien bytes langer dan de doorgegeven lengte; deze bytes zijn niet meegeteld in de dataveld lengte. De tijd en datum van de laatste schrijfopdracht naar de file, normaal gesproken is dat het moment waar de file naar disk is geschreven, wordt in twee woorden doorgegeven. Hiervan hebben de bits de volgende betekenis: Tijd: bit 0-4: seconden/2 (0-29) bit 5-10: minuten (0-59) bit 11-15: uren (0-23) Datum: bit 0-4: dag van de maand (0-31) bit 5-8: maand (1-12) bit 9-15: jaar-1980 (0-127) ~PCCOM#19 Produceer geluid Invoer: toonhoogte (1 byte) toonduur (1 byte) Uitvoer: geen De toonhoogte en de toonduur zijn beiden ‚‚n byte lang. De maximale toonhoogte ligt rond de waarde 100. Dit is al een behoorlijk hoge toon. De waarden vanaf 128 geven een ongedefinieerde toon. De toonduur wordt gegeven in 18den van seconden. Als de toonhoogte 0 bedraagt dan wordt geen geluid geproduceerd; het commando kan dan gebruikt worden om de opgegeven toonduur te wachten. ~PCCOM#1A Instelling bell-toon Invoer: toonhoogte (1 byte) toonduur (1 byte) Uitvoer: geen Met dit commando worden de toonhoogte en de toonduur ingesteld voor het bell-signaal. Dit is de pieptoon die gegeven wordt voor de ASCII code #07. Wat de waarden betreft zijn deze gelijk als voor het commando #19. ~PCCOM#1B Druk foutmelding af Invoer: Atom errorcode (1 byte) Uitvoer: geen Dit commando drukt een tekststring, behorende bij de gegeven errorcode, af op het beeldscherm van de PC. Dit schrijven doet de PC zelf. Er wordt geen informatie overgestuurd naar de Atom. ~PCCOM#1C Oproepen muisfunctie (PC INT 33) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen functies van de PC-muisdriver opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Voor het gebuik van deze functie wordt verwezen naar de handleiding voor muizen. Overige muisfuncties: #1C subfunctie #80: initialiseer muis Invoer: geen Uitvoer: aantal muisknoppen (1 byte) Deze functie initialiseert de muis en retourneert het aantal beschikbare muisknoppen. Indien er geen muisdriver ge‹nstalleerd is is het aantal knoppen 0. #1C subfunctie #81: initialiseer muis voor CLEAR 4 Invoer: geen Uitvoer: geen Functie #81 is een aanvulling op functie #80 indien de muis gebruikt wordt binnen een CLEAR 4 scherm. Het muiswindow wordt afgestemd op het effectieve grafische scherm. Tevens wordt ervoor gezorgd dat de muiscursor uitgezet wordt indien de Atom naar het eigen videogeheugen schrijft. Na de emulatie wordt de muiscursor weer aangezet. M.a.w. de muis wordt voor de Atom in CLEAR 4 geheel transparant. #1C subfunctie #82: muis informatie opvragen Invoer: geen Uitvoer: muis X co”rdinaat (1 word) muis Y co”rdinaat (1 word) knoppenstatus (1 byte) Informatie omtrent de muisstatus wordt hiermee opgevraagd; de co”rdinaten zijn 16 bits groot, de knoppenstatus is weergegeven als in onderstaand schema: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ linker muistoets ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ rechter muistoets ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ midden muistoets ÀÄÄÁÄÄÁÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÄÄ 0 #1C subfunctie #83: muis cursor aanzetten Invoer: geen Uitvoer: geen De muiscursor wordt zichtbaar op het scherm. #1C subfunctie #84: muis cursor uitzetten Invoer: geen Uitvoer: geen De muiscursor verdwijnt van het scherm. #1C subfunctie #85: muis informatie opvragen binnen CLEAR 4 Invoer: geen Uitvoer: muis X co”rdinaat (1 byte) muis Y co”rdinaat (1 byte) knoppenstatus (1 byte) Deze functie lijkt op functie #84, maar de muisco”rdinaten zijn aangepast naar een CLEAR 4 co”rdinaten stelsel; elke co”rdinaat is slechts ‚‚n byte groot. De knoppenstatus is hetzelfde als in bovengenoemde functie. Om compatibiliteit te behouden met de hardware muispointer van Kees van Oss is de Y co”rdinaat van de bovenste lijn binnen het CLEAR 4 scherm 255; de onderste lijn is 0. #1C subfunctie #86: CLEAR 4 muiscursor selecteren Invoer: muiscursor (1 byte) Uitvoer: geen In het terminalprogramma zijn 32 voorgedefinieerde muiscursors opgenomen welke met deze functie gekozen kunnen worden. Deze zijn gelijk aan de hardware muiscursors van Kees van Oss. Deze functie dient gebruikt te worden in CGA modi of in emulatie van Atom grafische modi; de cursor verschijnt dan in een andere kleur zodat deze duidelijker zichtbaar is. #1C subfunctie #87: muiscursor selecteren Invoer: muiscursor (1 byte) Uitvoer: geen In het terminalprogramma zijn 32 voorgedefinieerde muiscursors opgenomen welke met deze functie gekozen kunnen worden. Deze zijn gelijk aan de hardware muiscursors van Kees van Oss. ~PCCOM#1D Definieer muiscursor Invoer: muismasker (64 bytes) Uitvoer: geen Met muisfunctie #09 kan de vorm van de grafische muiscursor opgegeven worden. Deze dient dan echter wel eerst in het geheugen van de PC te staan. Met commando #1D kan de vorm van de muiscursor in het PC geheugen geplaatst worden. Voor het verdere gebruik van deze functie wordt ook verwezen naar de handleiding voor muizen. ~PCCOM#1E Opvragen cursorpositie Invoer: geen Uitvoer: X en Y co”rdinaat tekstcursor (2 bytes) Dit commando geeft de positie van de tekstcursor naar de Atom. De linkerbovenhoek is (0,0) ~PCCOM#1F Oproepen video functies (PC INT 10) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen `video functies van het PC-BIOS opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Voor het gebuik van deze functie wordt verwezen naar betreffende literatuur. ~PCCOM#20 Oproepen seri‰le communicatie functies (PC INT 14) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen communicatiefuncties van het PC-BIOS opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Voor het gebuik van deze functie wordt verwezen naar betreffende literatuur. ~PCCOM#21 Oproepen printer functies (PC INT 17) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen printerfuncties van het PC-BIOS opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Voor het gebuik van deze functie wordt verwezen naar betreffende literatuur. ~PCCOM#22 Oproepen MS-DOS functies (PC INT 21) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen MS-DOS systeemfuncties opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Omdat niet alle functies uitsluitend gebruik maken van bovengenoemde registers, kunnen sommige functies niet uitgevoerd worden. Voor het gebuik van deze functie wordt verwezen naar betreffende literatuur. ~PCCOM#23 Lees I/O byte Invoer: I/O adres (1 word) Uitvoer: gelezen data (1 byte) De PC leest het opgegeven I/O adres uit en geeft deze waarde aan de Atom. Het I/O adres ligt in het algemeen in het gebied $0000 - $03FF. ~PCCOM#24 Schrijf I/O byte Invoer: I/O adres (1 word) data (1 byte) Uitvoer: geen De PC stuurt de data naar het opgegeven I/O adres. Het I/O adres ligt in het algemeen in het gebied $0000 - $03FF. ~PCCOM#25 Defini‰er grafische letter Invoer: ASCII waarde van karakter (1 byte) karakter patroon (16 bytes) Uitvoer: geen Karakters die met commando #07 in de grafische mode geschreven worden kunnen met deze functie gedefini‰erd worden. Het eerst gelezen byte vormt de bovenste regel van het karakter. ~PCCOM#26 Opvragen muis aktiviteiten Invoer: geen Uitvoer: horizontale beweging (1 byte) vertikale beweging (1 byte) status van knoppen (1 byte) Deze functie biedt de mogelijk om snel de beweging van de muis op te vragen. Dit is relatief t.o.v. de laatst gelezen positie. ~PCCOM#27 Opvragen PC informatie Invoer: geen Uitvoer: PC identificatie (1 word) Het PC identificatie woord geeft enige informatie omtrent de beschikbare hardware die op de PC is aangesloten. Dit woord is als volgt samengesteld: bit 0 gezet als drive(s) aanwezig bit 1 gezet als 80x87 coprocessor aanwezig is bit 2 pc type (0=XT, 1=AT) bit 3 video type (1=Hercules mono, 0=kleurenkaart) bit 4,5 video mode bij opstarten bit 6,7 aantal drives als bit 0 gezet is bit 8 0=dos , 1 = windows terminal programma bit 9,11 aantal seri‰le poorten bit 12,13 video kaart (00=CGA, 01=EGA, 10=VGA) bit 14,15 aantal printerpoorten De bits 12 en 13, welke het type videokaart aangeven, kunnen vanuit de MS-DOS commandline met de optie /V= gezet worden. De niet gebruikte bits zijn '0'. Deze kunnen in de toekomst nog ingevuld worden. ~PCCOM#28 Emulatie clear 0 Invoer: video adres (1 word) video data (1 byte) Uitvoer: geen De opgegeven data wordt overeenkomstig met Atom grafics op het beeldscherm weergegeven. De positie van deze data wordt opgegeven met het videoadres. V¢¢r het gebruik van dit commando dient het font ATOMVDU.FNT geladen te zijn m.b.v. commando #06. Dit is nodig omdat bij het emuleren van CLEAR 0 gebruik wordt gemaakt van een karaktertabel. ~PCCOM#29 Wijzigen van palet of achtergrondkleur in CGA modi Invoer: paletnummer of kleurnummer (1 byte) Uitvoer: geen In de grafische modi kan met deze functie gekozen worden tussen de twee kleurensets van een CGA kaart. Als bit 7 van de kleur gezet is dan wordt de achtergrondkleur ingesteld. Palet 0: groen, rood, geel Palet 1: ultramarijn, violet, wit Dit commando kan ook gebruikt worden in tekstmode. In dat geval wordt, indien bit 7 gezet is, de kaderkleur van het scherm ingesteld. ~PCCOM#2A clear 1 monochroom emulatie, zie `PCCOM#28 ~PCCOM#2B clear 1 kleur emulatie, zie `PCCOM#28 ~PCCOM#2C clear 2 monochroom emulatie, zie `PCCOM#28 ~PCCOM#2D clear 2 kleur emulatie, zie `PCCOM#28 ~PCCOM#2E clear 3 monochroom emulatie, zie `PCCOM#28 ~PCCOM#2F clear 3 kleur emulatie, zie `PCCOM#28 ~PCCOM#30 clear 4 monochroom emulatie, zie `PCCOM#28 ~PCCOM#31 clear 4 kleur emulatie, zie `PCCOM#28 ~PCCOM#32 Inschakelen extended video mode Invoer: schermmode (1 byte) Uitvoer: geen De PC schakelt de aanwezige videokaart over naar de opgegeven mode. Hiermee kunnen dus hogere grafische modi opgeroepen worden. De toegestane waarden zijn afhankelijk van de aanwezige videokaart. Als een extended video mode gekozen wordt dient het tekstvenster met de juiste waarden gedefinieerd te worden om problemen bij het scrollen te voorkomen. Of de muis gebruikt kan worden in deze modi is afhankelijk van de gebruikte muisdriver. ~PCCOM#33 Zet graphics kleur voor extended video mode Invoer: pixelkleur (1 byte) Uitvoer: geen De opgegeven kleur wordt gebruikt bij plot opdrachten in extended video modi. De toegestane waarden zijn afhankelijk van de videomode. ~PCCOM#34 Schrijf grafisch pixel in extended video mode Invoer: X-co”rdinaat (1 word) Y-co”rdinaat (1 word) plot opdracht (1 byte) Uitvoer: geen Met dit commando kunnen punten in de extended video modi gezet of gewist worden. De bewerking wordt gegeven door de plot opdracht, 1=zet pixel, 2=wis pixel en 3=exor pixel met kleur. De X en Y-co”rdinaten zijn afhankelijk van de grafische resolutie van de geselecteerde video mode. In theorie kan een resolutie van 65535*65535 met 256 kleuren gebruikt worden. Slechts weinig videokaarten ondersteunen deze mode. Let erop dat in extended video modi de punt (0,0) links boven op het scherm is en niet zoals bij de Atom modi links onder! ~PCCOM#35 Instellen tekstvenster Invoer: X-links onder (1 byte) Y-links onder (1 byte) X-rechts boven (1 byte) Y-rechts boven (1 byte) Uitvoer: geen Het tekstvenster kan met dit commando ingesteld worden. Alle door de Atom geproduceerde beeldscherm uitvoer wordt in dit venster afgedrukt. Uitvoer die door de PC op het scherm afgebeeld wordt zoals een catalog of foutmelding kan buiten het venster vallen. Zoals bij de beschrijving van commando #32 al is vermeld moeten bij extended video modi de tekstvensters expliciet opgegeven worden. De windowbreedte klopt meestal wel, maar de hoogte is altijd 25 regels. Dit omdat in het PC- BIOS wel het aantal tekens per regel kan worden opgevraagd, maar niet het aantal regels per scherm. Daarom is gekozen voor de meest voorkomende waarde van 25 regels per scherm. ~PCCOM#36 Opheffen tekstvenster Invoer: geen Uitvoer: geen Dit (overbodige) commando heft een gedefini‰erd tekstvenster op. ~PCCOM#37 Joystick uitlezen Invoer: geen Uitvoer: stand joystick en vuurknoppen De analoge joystick van de PC wordt uitgelezen en omgezet naar digitale waarden die voor de Atom joystick gebruikelijk zijn. Voor de volledigheid de betekenis van de afzonderlijke bits: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ 0 = vuurknop gedrukt ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ 0 = knuppel links ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ 0 = knuppel omlaag ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ 0 = knuppel rechts ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 0 = knuppel omhoog 1 1 1 ~PCCOM#38 Joystick calibreren Invoer: geen Uitvoer: geen Een analoge joystick moet altijd gecalibreerd worden. Bij deze gebeurtenis wordt de stand van de joystick gelezen en deze stand wordt als "neutraal" beschouwd. Alle joystick bewegingen gelden ten opzichte van deze neutraalstand. Bij het opstarten van het terminal programma en bij een reset van de Atom wordt de joystick automatisch gecalibreerd; deze functie is alleen nodig indien tijdens het werken met de Atom van joystick gewisseld wordt of als de PC van snelheid veranderd. Dit laatste geval omdat het uitlezen van de joystick tijdafhankelijk is. ~PCCOM#39 Masker bit 7 instellen Invoer: 0 -> bit 7 is altijd '0' 1 -> bit 7 blijft ongewijzigd. Uitvoer: geen De ascii-codes #00 t/m #1F worden door de Atom als controlcodes opgevat. De PC kent echter voor deze codes ook nog een aantal symbolen. Als het masker voor bit 7 gezet is, worden alle ascii-codes normaal afgehandeld; als dit masker gewist is wordt van ieder, op het scherm af te drukken karakter, bit 7 gewist. Hiermee kunnen de speciale symbolen door middel van de ascii waarden #80 t/m #9F ook op het scherm afgebeeld worden. ~PCCOM#3A Oproepen keyboard functies (PC INT 16) Invoer: registerset (4 words) Uitvoer: registerset (4 words) Hiermee kunnen de keyboard functies van het PC-BIOS opgeroepen worden. De registerset bestaat uit acht bytes, die de registers AX, BX, CX en DX van de 8088/80x86 processor voorstellen. Bit 0 van DH (het laatst overgezonden byte van het resultaat) bevat de waarde van de ZeroFlag van de 80x86; hiermee kan de keyboard scan beter gebruikt worden. Voor het gebuik van deze functie wordt verwezen naar betreffende literatuur. Let erop dat er bij het gebruik van deze interrupt verschillen kunnen zijn bij de XT en AT! ~PCCOM#3B Shell naar DOS Invoer: MSDOS commando als ASCIIZ string Uitvoer: geen Als men tijdens het werken behoefte krijgt om een MS-Dos programma te gebruiken (bijvoorbeeld FORMAT of DISKCOPY) kan met dit commando ieder geldig MS-DOS commando uitgevoerd worden. Als men tijdelijk naar MS-DOS wil kan dat door het opstarten van een tweede COMMAND.COM. Geef om terug te keren naar de Atom dan het commando EXIT. ~PCCOM#3C Zoek eerste passende file Invoer: filespecificatie als ASCIIZ string Uitvoer: resultaat (1 byte) `DTA informatie (22 bytes) MS-DOS biedt de mogelijkheid om files te zoeken die voldoen aan de opgegeven filespecificatie. Hierin mogen wildcards * en ? voorkomen. Dit zoeken naar files gaat in twee stappen. Bij de eerste zoekactie dient dit commando gebruikt te worden. Als een file gevonden is dan wordt als resultaat een 0 overgezonden. Het resultaat geeft de foutcode weer als geen passende file gevonden is; in dat geval volgt er geen DTA. In de DTA, dit staat voor Disk Transfer Area, is alle MS- DOS directory informatie opgenomen. Voor de exacte inhoud wordt verwezen naar bijlage II. ~PCCOM#3D Zoek volgende passende file Invoer: geen Uitvoer: resultaat (1 byte) `DTA informatie (22 bytes) De tweede stap bij het zoeken naar files krijgt geen parameters mee omdat deze nog bekend is vanuit de eerste zoekactie. Een voorwaarde is dat er tussen twee zoektochten geen disk activiteiten hebben plaats gevonden. De teruggegeven informatie is het zelfde als bij functie #3C. ~PCCOM#3E Selecteer printer Invoer: printernummer (1 byte) Uitvoer: printerstatus (1 byte) Met deze functie wordt een printer gekozen die aangesproken wordt als de printer aangezet wordt met $2 of CTRL-B. De uitvoer is de status van de betreffende printer. Als deze status #90 bedraagt is de printer gereed om data te ontvangen en af te drukken. ~PCCOM#3F Open random access file Invoer: filenaam als ASCIIZ-string file-attribuut (1 byte) Uitvoer: handle (1 byte) Bij het openen van een file bepaalt het attribuut op welke wijze de file aangesproken mag worden. Het attribuut is gewijzigd sinds de vorige versies. De afzonderlijke bits hebben de volgende betekenis: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÄÄÁÂÄÁÂÄÁÂÄÁÄÄÁÂÄÙ ³ ÀÄÄÂÄÄÙ ³ ÀÄÄÂÄÄÙ ³ ³ ³ ÀÄÄÄÄÄ toegangsmodus ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ altijd '0' ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ file sharing mode ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ handle vlag Toegangsmodus: 000 alleen lezen 001 alleen schrijven 010 lezen en schrijven File share modus: 000 alleen actuele programma heeft toegang (FCB mode) 001 alleen actuele programma heeft toegang 010 andere programma's mogen alleen lezen 011 andere programma's mogen alleen schrijven 100 andere programma's mogen lezen en schrijven Handle vlag: 0 Afhankelijk proces mag handle aanspreken 1 Alleen het actuele proces mag handle aanspreken De file sharing mode is van toepassing indien er gebruik wordt gemaakt van netwerkprogrammatuur. Deze modus is van toepassing indien andere programma's proberen te lezen of schrijven terwijl het bestand geopend is. De computer zoekt het opgegeven bestand. Als dit gevonden is wordt het geopend voor de gewenste toegang. Bestanden waarnaar geschreven mag worden worden aangemaakt als zij niet gevonden worden. Bij een niet geopend bestand is de afgegeven handle 0; het is niet te achterhalen waarom de file niet gevonden is. Iedere andere waarde voor de handle duidt erop dat de file geopend is. ~PCCOM#40 Sluit random access file Invoer: handle (1 byte) Uitvoer: geen De opgegeven file wordt afgesloten en de handle wordt vrijgegeven. De handle moet een waarde hebben groter dan 4 omdat anders een MS-DOS standaard apparaat gesloten kan worden. ~PCCOM#41 Schrijf byte naar random access file Invoer: handle (1 byte) data (1 byte) Uitvoer: resultaat (1 byte) De data wordt naar de file met de betreffende handle gestuurd. Bij succes is het resultaat 1. Een resultaat 0 geeft aan dat er geen byte meer naar de file geschreven kon worden; de disk is dan vol. ~PCCOM#42 Lees byte van random access file Invoer: handle (1 byte) Uitvoer: resultaat (1 byte) data (1 byte) De data wordt van de file met de betreffende handle gelezen. Bij succes is het resultaat 1. Een resultaat 0 geeft aan dat er geen byte meer gelezen kon worden; het einde van de file is dan bereikt. Er moet dan toch nog een leesopdracht plaats vinden omdat de PC een willekeurig byte overstuurd. ~PCCOM#43 Verplaats random access file pointer Invoer: handle (1 byte) offset van pointer (4 bytes) offset code (1 byte) Uitvoer: resultaat (1 byte) absolute waarde van pointer (4 bytes) De pointer naar een random access file kan met deze functie opgevraagd worden. Hiertoe wordt eerst de handle van de betreffende file gegeven en daarna een 32 bits offset voor de pointer. Tenslotte volgt de offset code, hiermee wordt aangegeven hoe de offset geinterpreteerd dient te worden: 0: offset heeft betrekking op begin van het bestand 1: offset heeft betrekking op acuele positie van pointer 2: offset heeft betrekking op einde van het bestand Als er geen fout optreed is het resultaat 0, gevolgd door de waarde van de pointer ten opzichte van het begin van het bestand. De offset mag 0 of negatief zijn bij offset codes 1 en 2. Het is zelfs mogelijk om de pointer voor het begin of achter het eind van het bestand te zetten. Hiervoor wordt geen foutmelding gegeven. De fout treedt pas op bij de eerstvolgende lees of schrijfopdracht voor die file. Met dit commando kan de actuele waarde van de pointer opgevraagd worden door een offset 0 te geven en offset code 1; hierdoor wordt de pointer 0 bytes verplaatst ten opzichte van de actuele positie -> deze blijft dus staan. ~PCCOM#44 Opvragen extensie van random access file Invoer: handle (1 byte) Uitvoer: resultaat (1 byte) extensie van file (4 bytes) De extensie is in dit geval niet het laatste stukje van de filenaam maar de lengte van de file. Bij een resultaat 0 volgt de lengte van de file. ~PCCOM#45 Lees teken onder muiscursor Invoer: geen Uitvoer: teken onder muiscursor (1 byte) Deze functie is analoog aan functie #02, behalve dat nu het karakter gelezen wordt op de plaats van de muiscursor; deze functie werkt alleen in tekstmodi 40*25 en 80*25. ~PCCOM#46 Opvragen versienummer terminal programma Invoer: geen Uitvoer: release/update nummer (1 byte) hoofdversienummer (1 byte) Het is zinnig om het versienummer van het terminal programma op te vragen als er gebruik wordt gemaakt van deze serie PC-commando's. Hiermee kan de gebruiker gewaarschuwd worden dat hij/zij mogelijk een recentere versie van het terminal programma dient te gebruiken. Alle commando's in deze handleiding zijn beschikbaar vanaf versie 1.05. ~PCCOM#47 Teken naar printer sturen Invoer: teken (1 byte) Uitvoer: geen Het gelezen teken wordt naar de printer gestuurd indien deze aangezet is met $2 of ^B. Als de printer niet aangezet is dan voert dit commando niets uit. In het geval dat de printer wel aangezet is maar de printer is niet on-line wordt gewacht totdat de printer on-line komt. ~PCCOM#48 CGA grafisch teken defini‰ren Invoer: ascii waarde van teken (1 byte) bitpatroon van teken (8 bytes) Uitvoer: geen In de grafische CGA mode is het mogelijk om zelf de tekens 128 t/m 255 te defini‰ren (iets dat MS-DOS doet met het commando GRAFTABL). Deze mogelijkheid is nu ook beschikbaar voor de Atom. Nadat de ascii waarde van het te defini‰ren teken is overgezonden worden de volgende acht bytes opgeslagen als bitpatroon. De nieuwe tekens worden in hetzelfde gebied opgeslagen als het font voor GTEXT en Atomvdu; het is dus niet mogelijk om deze drie fonts gelijktijdig te gebruiken of de fonts moeten om en om geladen worden. Het is al aan te voelen dat een komplete karakterset geladen kan worden. Om een nieuwe karakterset te laden kan het bekende FONT statement gebruikt worden. ~PCCOM#49 Horizontaal vullen Invoer: co”rdinaten beginpunt (2 words) grenskleur (1 byte) Uitvoer: geen Vanaf het opgegeven punt wordt de beeldlijn naar links en naar rechts gekleurd in de aktuele kleur. Dit kleuren gaat door totdat een pixel ontmoet wordt dat gelijk is aan de grenskleur. Bij het kleuren wordt rekening gehouden met een eventueel grafisch venster en een verschoven oorsprong. Voorwaarde is wel dat het beginpunt in het grafisch venster ligt. ~PCCOM#4A Vertikaal vullen Invoer: co”rdinaten beginpunt (2 words) grenskleur (1 byte) Uitvoer: geen Vanaf het opgegeven punt wordt de beeldlijn naar boven en naar beneden gekleurd in de aktuele kleur. Dit kleuren gaat door totdat een pixel ontmoet wordt dat gelijk is aan de grenskleur. Bij het kleuren wordt rekening gehouden met een eventueel grafisch venster en een verschoven oorsprong. Voorwaarde is wel dat het beginpunt in het grafisch venster ligt. ~PCCOM#4B Aanroepen INT 61h Invoer: registerset (4 words) Uitvoer: registerset (4 words) Om het Atom terminal programma zelf uit te breiden kan op de PC een resident programma gestart worden dat geaktiveerd wordt bij een oproep van INT 61h. Parameters en resultaten kunnen eventueel via de registers doorgegeven worden. Zie het hoofdstuk "communicatie met andere programma's" voor meer uitleg. ~PCCOM#4C Defini‰er een grafisch venster Invoer: X-co”rdinaat linker benedenhoek (1 word) X-co”rdinaat linker benedenhoek (1 word) Y-co”rdinaat rechter bovenhoek (1 word) Y-co”rdinaat rechter bovenhoek (1 word) Uitvoer: geen Voor de Atom grafische mode bood het Gagsrom al mogelijkheden voor grafische vensters. Voor de extended video mode kan dit commando gebruikt worden om een grafisch venster vast te leggen. Dat houdt in dat alleen binnen dat venster getekend kan worden. Na het gebruiken van een CLEAR opdracht wordt het venster automatisch opgeheven. ~PCCOM#4D Grafisch venster opheffen Invoer: geen Uitvoer: geen Hiermee wordt een grafisch venster opgeheven. ~PCCOM#4E Grafische oorsprong verschuiven Invoer: co”rdinaten van nieuwe oorsprong (2 words) Uitvoer: geen Het grafische nulpunt ligt normaal in de linker bovenhoek van het scherm. Met dit commando kan het punt (0,0) verschoven worden naar een willekeurige plaats op het scherm. Bij het verschuiven van de grafische oorsprong wordt geen rekening gehouden met een eerder verschoven oorsprong en een grafisch venster. De nieuwe positie is dus altijd ten opzichte van de linker bovenhoek van het scherm. Na een CLEAR opdracht bevindt de oorsprong zich altijd in de linker bovenhoek. ~PCCOM#4F Selecteer schermpagina voor monitor Invoer: schermpagina nummer (1 byte) Uitvoer: geen Bij gebruik van een tekstmode kan gebruik gemaakt worden van verschillende schermpagina's. Er zijn in feite twee mogelijkheden bij het werken met verschillende pagina's, te weten: werkpagina is zichtbaar op scherm of de werkpagina en de getoonde pagina zijn verschillend. Met het commando #4F kan de pagina gekozen worden die op de monitor getoond wordt. ~PCCOM#50 Selecteer schermpagina voor bewerkingen Invoer: schermpagina nummer (1 byte) Uitvoer: geen Bij gebruik van een tekstmode kan gebruik gemaakt worden van verschillende schermpagina's. Er zijn in feite twee mogelijkheden bij het werken met verschillende pagina's, te weten: werkpagina is zichtbaar op scherm of de werkpagina en de getoonde pagina zijn verschillend. Met het commando #50 kan de pagina gekozen worden waar de schrijfopdrachten naar toe gestuurd worden. ~PCCOM#51 Zet cursor lijnen Invoer: bovenste cursorlijn (1 byte) onderste cursorlijn (1 byte) Uitvoer: geen De vorm van de cursor kan ingesteld worden met dit com- mando. De cursorlijnen worden van boven naar beneden geteld. De eerste parameter zal dus altijd groter zijn dan de tweede. Bij ongeldige waarden verdwijnt de cursor van het scherm. Het aantal lijnen verschilt per video- kaart. ~PCCOM#52 Gereserveerd ~PCCOM#53 Gereserveerd ~PCCOM#54 Gereserveerd ~PCCOM#55 Selecteer user font voor EGA/VGA tekstmode Invoer: geen Uitvoer: geen Dit commando laadt het geladen font in het fontram van de EGA of VGA kaart. Hiermee kunnen de karakters in tekstmo- de gewijzigd worden. ~PCCOM#56 Selecteer EGA 8*14 ROM font Invoer: geen Uitvoer: geen Hiermee wordt het standaard EGA 8*14 karakterset in de fontram van de EGA of VGA kaart geladen. Automatisch wordt omgeschakeld naar 25 regels per scherm. Het kan nodig zijn om het tekstwindow te herdefini‰ren. ~PCCOM#57 Selecteer EGA 8*8 ROM font Invoer: geen Uitvoer: geen Hiermee wordt het standaard EGA 8*8 karakterset in de fontram van de EGA of VGA kaart geladen. Automatisch wordt omgeschakeld naar 43 regels per scherm voor EGA en 50 regels per scherm voor VGA. Het tekstwindow zal aange- past moeten worden. ~PCCOM#58 Schrijf grafisch venster naar disk Invoer: x-co”rdinaat links onder (1 word) y-co”rdinaat links onder (1 word) x-co”rdinaat rechts boven (1 word) y-co”rdinaat rechts boven (1 word) filehandle (1 byte) Uitvoer: geen Schrijft een grafisch window in een extended video mode naar file. De file moet reeds geopend zijn. De coordinaten van het window en de file handle worden als parameter opgegeven. De co”rdinaten gelden vanaf de logische oorsprong. Er wordt dus rekening gehouden met een verschoven oorsprong. Er wordt geen resultaat teruggegeven; het is dus niet bekend of alle data op de disk terecht zijn gekomen. Dit commando is hoofdzakelijk bedoeld om stukken van een grafisch scherm tijdelijk in een bestand op te slaan. Na be‰indiging van het commando wordt de file niet automatisch afgesloten. ~PCCOM#59 Lees grafisch venster van disk Invoer: x-co”rdinaat links onder (1 word) y-co”rdinaat links onder (1 word) filehandle (1 byte) Uitvoer: geen Een grafisch window dat met commando #58 naar file geschreven is kan hiermee teruggezet worden op het scherm. Dit hoeft niet op dezelfde plaats te zijn. De file moet al geopend zijn. Er wordt geen resultaat teruggemeld zodat niet bekend is of de data goed gelezen zijn. Na het inlezen wordt het bestand niet automatisch gesloten. ~PCCOM#5A Grafische functies [circle, block, triangle, line] SHAPES - leest een sub-commando nummer en voert vervolgens de functie uit. Bij deze functies wordt rekening gehouden met een verschoven grafische oorsprong en het huidige grafische venster. PCCOM#5A subfunctie #0: teken een cirkel Invoer: x-co”rdinaat middelpunt (1 word) y-co”rdinaat middelpunt (1 word) straal (1 word) Uitvoer: geen In extended video mode wordt een cirkel getekend met het middelpunt op de opgegeven co”rdinaten en met de opgegeven straal. PCCOM#5A subfunctie #1: teken een cirkel en vul deze Invoer: x-co”rdinaat middelpunt (1 word) y-co”rdinaat middelpunt (1 word) straal (1 word) Uitvoer: geen In extended video mode wordt een cirkel getekend met het middelpunt op de opgegeven co”rdinaten en met de opgegeven straal. Deze cirkel wordt opgevuld in de geldende voorgrondkleur. PCCOM#5A subfunctie #2: teken een rechthoek Invoer: x-co”rdinaat linker benedenhoek (1 word) y-co”rdinaat rechter benedenhoek (1 word) x-co”rdinaat linker bovenhoek (1 word) y-co”rdinaat rechter bovenhoek (1 word) Uitvoer: geen In extended video mode wordt een rechthoek getekend tussen de opgegeven hoekpunten. PCCOM#5A subfunctie #3: teken een rechthoek en vul deze Invoer: x-co”rdinaat linker benedenhoek (1 word) y-co”rdinaat rechter benedenhoek (1 word) x-co”rdinaat linker bovenhoek (1 word) y-co”rdinaat rechter bovenhoek (1 word) Uitvoer: geen In extended video mode wordt een rechthoek getekend tussen de opgegeven hoekpunten. Deze rechthoek wordt opgevuld in de geldende voorgrondkleur. PCCOM#5A subfunctie #4: teken een driehoek Invoer: x en y-co”rdinaten eerste hoekpunt (2 words) x en y-co”rdinaten tweede hoekpunt (2 words) x en y-co”rdinaten derde hoekpunt (2 words) In extended video mode wordt een driehoek getekend tussen de opgegeven hoekpunten. PCCOM#5A subfunctie #5: teken een driehoek en vul deze Invoer: x en y-co”rdinaten eerste hoekpunt (2 words) x en y-co”rdinaten tweede hoekpunt (2 words) x en y-co”rdinaten derde hoekpunt (2 words) In extended video mode wordt een driehoek getekend tussen de opgegeven hoekpunten. Deze driehoek wordt opgevuld in de geldende voorgrondkleur. PCCOM#5A subfunctie #6: zet lijn patroon Invoer: bitpatroon van de lijn (1 word) Uitvoer: geen Om niet-aaneengesloten lijnen te tekenen kan met deze functie een 16-bits patroon opgegeven worden. PCCOM#5A subfunctie #7: teken een rechte lijn Invoer: x-co”rdinaat beginpunt (1 word) y-co”rdinaat beginpunt (1 word) x-co”rdinaat eindpunt (1 word) y-co”rdinaat eindpunt (1 word) Uitvoer: geen In extended video mode wordt een lijn getekend tussen het opgegeven begin en eindpunt. Hierbij geldt dat een '1' in het lijn patroon (zie ook subfunctie #06) geplot wordt de geldende voorgrondkleur. Een '0' in het lijn patroon laat het pixel ongewijzigd. PCCOM#5A subfunctie #8: huidige kleur/attribuut opvragen Invoer: geen uitvoer: attribuut (1 byte) De waarde van het huidige attribuut of van de huidige voorgrondkleur kan hiermee opgevraagd worden. PCCOM#5A subfunctie #9: video mode support opvragen Invoer: video mode (1 byte) Uitvoer: support status (1 byte) De PC controleert of de gevraagde video mode ondersteund wordt door de huidige videokaart. Bij status #FF wordt de mode niet ondersteund. Er wordt niet van mode veranderd. ~PCCOM#5B Directe toegang tot PC-video geheugen Met directe toegang tot het PC-video geheugen kunnen bepaalde bewerkingen veel sneller gebeuren dan via het BIOS. Deze functies zullen in de windows versie van het terminal programma niet ge‹mplementeerd zijn; gebruik ervan is dus vanuit vanwege de compatibiliteit niet aan te raden. #5B subfunctie #0: Lees direct PC videogeheugen Invoer: offset adres videogeheugen (1 word) Uitvoer: data uit videogeheugen (1 byte) Deze call maakt het mogelijk om het PC videogeheugen direct uit te lezen, dus niet via het BIOS. Deze werkwijze is over het algemeen wat sneller. Bovendien worden hiermee ook systemen met twee monitoren ondersteund. #5B subfuntie #1: Schrijf direct PC videogeheugen Invoer: offset adres videogeheugen (1 word) data (1 byte) Uitvoer: geen Deze call maakt het mogelijk om direct naar het PC videogeheugen te schrijven, dus niet via het BIOS. Deze werkwijze is over het algemeen wat sneller. Bovendien worden hiermee ook systemen met twee monitoren ondersteund. #5B subfunctie #2: Verplaats datablok in PC videogeheugen Invoer: offset adres bron (1 word) offset adres bestemming (1 word) bloklengte (1 word) Uitvoer: geen Het datablok beginnende vanaf 'offset adres bron' met lengte 'bloklengte' wordt gekopieerd naar 'offset adres bestemming'. Hierme kunnen snel stukken tekst over het scherm verplaatst worden, data kan tussen verschillende schermpagina's gekopieerd worden of in twee-monitor systemen van de ene monitor naar de andere. #5B subfunctie #5B: Opvragen reset type Invoer: geen Uitvoer: reset type (1 byte) De Atom kan opvragen wat de reden was van de laatste reset. Door het terminal programma worden de volgende typen gebruikt: Reset type #0 - terminal programma start Reset type #1 - reset door CTRL-ALT- De overige reset typen kunnen door software vanuit de Atom gezet worden. #5B subfunctie #5C: Instellen reset type Invoer: reset type (1 byte) Uitvoer: geen Voor een software reset kan met dit commando het reset type ingesteld worden. Ofschoon type #0 en #1 gereserveerd zijn door het terminal programma kunnen deze codes alsnog ingesteld worden om een dergelijke reset te simuleren. #5B subfunctie #5D: Software reset genereren Invoer: geen Uitvoer: geen Het terminal programma geeft de Atom kaart een reset signaal. Het reset type kan van te voren worden ingesteld met commando #5B, subfunctie #5C. ~PCCOM#5C Tekstpagina's kopi‰ren, saven en laden De volgende serie commando's bieden mogelijkheden om tekstschermen onderling te kopi‰ren of om ze (tijdelijk) te bewaren of te laden van disk. Aangezien het videosegment van een Herculeskaart begint op adres B000h en van de overige videokaarten op B800h moet met behulp van de command line parameter /V=vvv de juiste videokaart opgegeven zijn om deze functies goed te laten werken. #5C subfunctie #0: kopi‰er schermpagina Invoer: bron schermpagina (1 byte) bestemming schermpagina (1 byte) Uitvoer: geen De inhoud van de 'bron'pagina wordt gekopi‰erd naar de bestemming. #5C subfunctie #1: bewaar schermpagina op disk Invoer: schermpagina nummer (1 byte) file handle (1 byte) Uitvoer: geen De inhoud van de opgegeven schermpagina wordt inclusief de attributen in een bestand opgeslagen. Dit bestand dient van te voren als random access file geopend te zijn. Er volgt geen terugmelding; het is dus niet na te gaan of het scherm goed opgeslagen is. Na afloop wordt het bestand niet afgesloten. #5C subfunctie #2: haal schermpagina van disk Invoer: schermpagina nummer (1 byte) file handle (1 byte) Uitvoer: geen De inhoud van het opgegeven "pagina-bestand" wordt in de opgegeven schermpagina geladen. Dit bestand dient van te voren als random access file geopend te zijn. Er volgt geen terugmelding; het is dus niet na te gaan of het scherm goed geladen is. Na afloop wordt het bestand niet afgesloten. ~PCCOM#5D Ascii keyboard scan Invoer: geen Uitvoer: keyboard status (1 byte) ascii waarde -als toets gedrukt- (1 byte) scancode -als toets gedrukt- (1 byte) Dit commando is een combinatie van de commando's #1 en #3A. De keyboard status wordt altijd als resultaat terug gegeven. De afzonderlijke bits hebben de volgende betekenis: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ 1 = toets gedrukt ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ 1 = shift-toets gedrukt ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ 1 = ctrl-toets gedrukt ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ 1 = alt-toets gedrukt ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = scroll-lock aan ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = num-lock aan ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = caps-lock aan ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = ins mode aan Als bit 0 gezet is volgen achtereenvolgens nog de ascii waarde en de scan code van de ingedrukte toets. Als er geen toets ingedrukt is wordt alleen de status overgestuurd naar de Atom. ~PCCOM#5E Diverse wachtfuncties Let op: de functies van commando #5E maken gebruik van BIOS INT 15H; deze is niet in een PC/XT ge‹mplementeerd! #5E subfunctie #0: Wacht gedurende ingestelde tijd Invoer: geen Uitvoer: dummy (1 byte) De PC wacht gedurende een van te voren opgegeven tijd. Na het verstijken van deze tijd wordt een dummy byte naar de Atom gestuurd om beide systemen te synchroniseren. De wachttijd kan met subfunctie #1 van commando #5E ingesteld worden. #5E subfunctie #1: Stel wachttijd in Invoer: tijd in microseconden (4 bytes) Uitvoer: geen Met deze functie wordt de wachttijd ingesteld voor de functies #0 en #2 van commando #5E. Het meest lage byte wordt als eerste overgestuurd. #5E subfunctie #2: Vlag zetten na wachttijd Invoer: geen Uitvoer: geen In de PC wordt een vlag gewist die na de opgegeven wachttijd gezet wordt. De wachttijd wordt ingesteld met commando #5E subfunctie #1. De status van deze vlag kan opgevraagd worden met commando #5E subfunctie #3. #5E subfunctie #3: Timer vlag uitlezen Invoer: geen Uitvoer: status van de vlag (1 byte) Als de wachtperiode, die met commando #5E subfunctie #2 gestart werd, verstreken is heeft bit 7 de waarde '1'. #5E subfunctie #4: 1/60 seconde wachten Invoer: geen Uitvoer: dummy byte (1 byte) Deze functie laat de PC 1/60 seconde wachten waarna een dummy byte naar de Atom gestuurd wordt om de twee systemen te synchroniseren. #5E subfunctie #5: 1/50 seconde wachten Invoer: geen Uitvoer: dummy byte (1 byte) Deze functie laat de PC 1/50 seconde wachten waarna een dummy byte naar de Atom gestuurd wordt om de twee systemen te synchroniseren. ~PCCOM#5F Paint functies Deze functies kleuren gesloten vlakken in met gedefini‰rde patronen. Hierbij wordt rekening gehouden met een verschoven oorsprong en grafisch venster. Paint-patronen worden samen met de geplande sprites opgeslagen in het geheugen van de PC. In totaal zijn 64 patronen en sprites beschikbaar. Beiden hebben hetzelfde formaat, met afmetingen van 16*16 pixels. PCCOM#5F subfunctie 0: vlak inkleuren in voorgrondkleur Invoer: x-co”rdinaat (1 word) y-co”rdinaat (1 word) grenskleur (1 byte) Uitvoer: geen Een vlak, ingesloten door lijnen in de grenskleur, wordt gevuld in de geldende voorgrondkleur. De grenskleur mag hetzelfde zijn als de huidige voorgrondkleur. PCCOM#5F subfunctie n: vlak inkleuren volgens patroon n waarbij geldt: 1 < n < 64 Invoer: x-co”rdinaat (1 word) y-co”rdinaat (1 word) grenskleur (1 byte) Uitvoer: geen Een vlak, ingesloten door lijnen in de grenskleur, wordt gevuld met het opgegeven patroon. De grenskleur mag hetzelfde zijn als de huidige voorgrondkleur. PCCOM#5F subfunctie #FD: patroonfile laden van disk Invoer: pad+filenaam als ASCIIZ Uitvoer: error code (1 byte) Om een set met patronen te laden van disk dient dit commando gebruikt te worden. De filenaam mag vooraf gegaan worden door een drive en pad aanduiding. Wildcards zijn niet toegestaan. PCCOM#5F subfunctie #FE: patroonfile schrijven naar disk Invoer: pad+filenaam als ASCIIZ Uitvoer: error code (1 byte) Een set met patronen wordt met dit commando op disk opgeslagen. De filenaam mag vooraf gegaan worden door een drive en pad aanduiding. Wildcards zijn niet toegestaan. PCCOM#5F subfunctie #FF: patroon defini‰ren Invoer: patroonnummer (1 byte) patroon (256 bytes) Uitvoer: geen Een patroon heeft de afmetingen van 16x16 bytes. Ieder byte bevat de kleurwaarde van ‚‚n pixel. Op deze manier kunnen dus maximaal 256 kleuren in een patroon verwerkt worden. De eerste 16 bytes vormen de bovenste rij van de patroon, de daaropvolgende 16 bytes de tweede rij enz. ~PCCOM#60 Zet PC in CLEAR 0 emulatie mode Invoer: geen Uitvoer: geen In het windows terminal programma moet bij emulatie van de grafische modi duidelijk aangegeven worden of het CLEAR 0 betreft of een van de overige Atom grafische modi. Daartoe wordt CLEAR 0 met een apart commando ge‹nitialiseerd. In de DOS versie wordt automatisch het benodigde 'ATOMVDU.FNT' geladen mits deze geplaatst is in de directory C:\ATOM\FONT. ~PCCOM#61 Record lezen/schrijven Om data uit een bestand te lezen kan het lezen van de gegevens in een blok handiger danwel sneller zijn door het datablok in ‚‚n commando te lezen in plaats van de afzonderlijke bytes. Een record mag maximaal 16 kb groot zijn. Als buffer wordt het opslag gebied voor patronen en sprites gebruikt. Deze zijn na het lezen of schrijven van een record gewist! #61 subfunctie #0: record lezen Invoer: handle (1 byte) aantal te lezen bytes (1 word) Uitvoer: errorcode (1 byte) aantal gelezen bytes (1 word) xxx bytes Als invoer worden de file handle en het aantal te lezen bytes doorgegeven aan de PC. Deze probeert het aantal bytes te lezen. Indien er geen toegangsfout optreedt is de errorcode gelijk 0. In dat geval wordt vervolgens het aantal gelezen bytes teruggemeld. Deze bytes worden als laatste overgestuurd van PC naar Atom. Als er een fout optradt volgen er na de errorcode geen data meer. Als er geen fout optreedt, maar het aantal gelezen bytes is kleiner dan het aantal gevraagde bytes, is het einde van het bestand bereikt. #61 subfunctie #1: record schrijven Invoer: handle (1 byte) aantal te schrijven bytes (1 word) xxx bytes Uitvoer: errorcode (1 byte) aantal geschreven bytes (1 word) De Atom stuurt de file handle, het aantal te schrijven bytes en de data naar de PC. De data worden naar het bestand geschreven en er volgt een terugkoppeling. Als er een fout optrad tijdens het schrijven is de errorcode ongelijk 0 en volgt er geen data meer. Bij succes wordt het aantal geschreven bytes teruggemeld. Als dit aantal kleiner is dan het oorspronkelijk aantal is de disk vol. ~PCCOM#62 Floating Point functies Dit commando biedt de mogelijkheid om gebruik te maken van de rekenkracht van een 80x87 coprocessor. Hierbij worden twee modi ondersteund: de standaard Atom notatie (40 bits getallen) of de Intel8 (64 bits getallen). Dit formaat dient gegeven te worden alvorens de floating point functies gebruikt worden. Voor de floating point functies is een 287 of hoger nodig. Voor het gebruik van goniometrische functies (sin, cos, tan e.d.) is zelfs een 387 of hoger vereist. Alvorens de functies te gebruiken dient met subfunctie 0 getest te worden welke mathematische coprocessor in de pc aanwezig is. #62 subfunctie #00: fp-formaat instellen en processor opvragen #62 subfunctie #01: optellen #62 subfunctie #02: aftrekken #62 subfunctie #03: vermenigvuldigen #62 subfunctie #04: delen #62 subfunctie #05: absolute waarde bepalen #62 subfunctie #06: afronden naar integer waarde #62 subfunctie #07: vierkantswortel #62 subfunctie #08: tangens (387+ vereist) #62 subfunctie #09: sinus (387+ vereist) #62 subfunctie #10: cosinus (387+ vereist) #62 subfunctie #11: omrekenen naar graden #62 subfunctie #12: omrekenen naar radialen #62 subfunctie #13: machtverheffen Meer informatie omtrent deze floating point functies kan opgevraagd worden via HELP PCCOM#62xx. ~PCCOM#63 AIC Communicatie De Atom-in-PC kan via een AIC-kabel communiceren met een andere Atom die op de printerpoort is aangesloten. Alvorens te communiceren dient de gebruikte poort ge‹nitialiseerd te worden. Bij de overige commununicatie hoeft de printerpoort niet meer opgegeven te worden. #63 subfunctie #00: initialiseer AIC poort Invoer: adres printerpoort (1 word) Uitvoer: geen Het adres van de gebruikte printerpoort (378 voor LPT1 en 278 voor LPT2) wordt intern opgeslagen. Verder worden de handshakelijnen ingesteld voor de communicatie. #63 subfunctie #01: stuur byte naar andere computer Invoer: data (1 byte) Uitvoer: geen Het opgegeven byte wordt naar de andere computer gestuurd. #63 subfunctie #02: lees byte van andere computer Invoer: geen Uitvoer: ontvangen data (1 byte) Er wordt gewacht totdat een byte van de andere computer ontvangen is. Dit byte wordt geretourneerd naar de Atom-in-PC. ~PCCOM#64 Extended Memory Support Het gebruik van `XMS geheugen is nu standaard opgenomen in het terminal programma. Het gebruik van een losse XMS-driver is niet meer nodig. De maximale hoeveelheid beschikbaar `XMS geheugen wordt als command line parameter opgegeven bij het starten van het terminal programma. Als er XMS geheugen beschikbaar is kan dit zonder verdere initialisatie gebruikt worden. Wellicht ten overvloede, minimaal een pc met een 80286 processor is noodzakelijk. #64 subfunctie 0: versie opvragen Invoer: geen Uitvoer: versienummer (1 byte) releasenummer (1 byte) aantal xms pagina's (1 byte) #64 subfunctie 1: pagina voorzetten Invoer: nieuw paginanummer (1 byte) Uitvoer: 16 kb data Bij dit commando wordt de huidige pagina niet opgeslagen in xmsgeheugen. #64 subfunctie 2: pagina voorzetten Invoer: huidig paginanummer (1 byte) 16 kb data Uitvoer: geen Bij dit commando wordt de nieuwe pagina niet gelezen in het atomgeheugen. #64 subfunctie 3: pagina voorzetten Invoer: huidig paginanummer (1 byte) 16 kb data nieuw paginanummer (1 byte) Uitvoer: 16 kb data De huidige pagina wordt opgeslagen in het xms geheugen en de nieuwe pagina wordt in het atomgeheugen gelezen. ~PCCOM#65 Sprite support commando's De opzet is om de administratie, het bewaren van de scherminhoud en het plaatsen van de sprites door de PC uit te laten voeren en dus een hogere snelheid te bereiken. De sprites werken alleen in extended video modi. Elke sprite is 32x32 pixels in maximaal 255 kleuren, de kleurcode 255 (#FF) betekent achtergrondkleur; per sprite is 2kb XMS geheugen nodig. Functie 0 geeft het aantal beschikbare sprites terug. De overige functies geven minimaal een statusbyte retour. De betekenis van de bits in deze statuscode zijn: ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿ ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³ ÀÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ muis button 1 (functie 08) ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ muis button 2 (functie 08) ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄ muis button 3 (functie 08) ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ niet gebruikt (altijd 0) ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ geen sprites ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ongeldig spritenr 1 ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ongeldig spritenr 2 of geen muis ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ overlap sprite 1 en 2 cq muis De beschikbare functies voor sprites staan hieronder met naam aangegeven; meer informatie per functie kan opgevraagd worden met HELP PCCOM#65xx. #65 subfunctie 00: Definieer sprite base en initialisatie #65 subfunctie 01: Definieer sprite #65 subfunctie 02: Plaats sprite op het scherm #65 subfunctie 03: Verwijder sprite van het scherm #65 subfunctie 04: Verplaats sprite op het scherm #65 subfunctie 05: Plaats sprite op scherm, zonder administratie #65 subfunctie 06: Opvragen sprite coordinaten #65 subfunctie 07: Test overlap van twee sprites #65 subfunctie 08: Test overlap van een sprite met muis ~*CAT catalog disk (*.) Syntax: *CAT [filespec] Alle files die aan de opgegeven filespecificatie voldoen worden op het scherm weergegeven. Als er geen filespecificatie wordt opgegeven worden alle files van de actuele drive en directory afgebeeld. Files waarvan het hidden attribuut gezet is dmv van `*HIDE worden niet afgebeeld. ~*CD change directory Syntax: *CD [path] Als een path wordt opgegeven dan wordt de actuele directory gewijzigd in dit path mits het gevonden is. Als geen path opgegeven wordt, of alleen een drive aanduiding, dan wordt de actuele directory op de betreffende drive op het scherm aangegeven. ~*COMMAND ga tijdelijk naar MS-DOS Syntax: *COMMAND Hiermee kan het Atom programma tijdelijk onderbroken worden om in MS-DOS te werken. Vanuit MS-DOS kan met het `EXIT commando teruggekeerd worden naar de Atom. De Atom loopt dan gewoon door maar zal stoppen als er met de PC gecommuniceerd moet worden. Dit commando werkt ook in een basic programma. ~*DELETE wis file(s) (*D.) Syntax: *DELETE Als *MON actief is worden alle gevonden files waarvan het read-only ‚n het hidden attribuut gewist zijn op het scherm getoond. De Atom vraagt daarna een bevestiging om de files te verwijderen. Als *MON niet actief is worden de files niet op het scherm getoond en worden ze zonder om bevesting te vragen meteen verwijderd. ~*DRIVE verander actuele drive (*DR.) Syntax: *DRIVE Hiermee kan de actuele drive veranderd worden. Als een ongeldige driveletter opgegeven is, wordt het commando door een foutmelding geweigerd. De huidige drive blijft dan geldig. Een dubbele punt achter de driveletter is bij dit commando optioneel. ~*EXEC execute file (*EX.) Syntax: *EXEC De opgegeven file wordt geopend en alle toetsenbord invoer via de vector #FFE3 (#20A) wordt gelezen uit het opgegeven bestand. Het exec commando wordt alleen be‰indigd door het tussentijds herstellen van de leesvector (het bestand wordt dan niet gesloten) of als de waarde 26 gelezen wordt (het bestand wordt dan wel gesloten). De filehandle van deze file is opgeslagen in adres #BC. ~*FIND zoek passende file (*FI.) Syntax: *FIND [] Dit commando zoekt een passende file aan de hand van de opgegeven filespecificatie. Voor de eerste zoekactie dient een filespecificatie opgegeven te worden. Voor verdere zoekacties moet alleen *FIND gegeven worden. Resultaten worden opgeslagen vanaf adres #140. Na het geven van een *FIND commando bevat adres #140 het resultaat; een 0 geeft aan dat er een file gevonden is. Informatie omtrent deze file is opgeslagen van #141 t/m #157. Hierin is de disk transfer area opgeslagen. De filenaam is te vinden vanaf adres #14A. Voor uitgebreide informatie over de DTA kunt u HELP DTA oproepen. ~*HELP geeft beknopte hulp (*H.) Syntax: *HELP Een beknopt overzicht van alle dos commando's wordt op het scherm afgebeeld. ~*HIDE zet hidden attribuut (*HI.) Syntax: *HIDE Van alle gevonden files wordt het hidden attribuut bit gezet, zodat deze files niet herkend worden door `*CAT , `*DELETE , `*LOCK en `*UNLOCK. ~*INFO file informatie opvragen (*I.) Syntax: *INFO Van de opgegeven file worden het moment van aanmaken, load adres, executie adres, file lengte en attributen weergegeven. Hier zijn in de filenaam geen jokers * en ? toegestaan. ~*LOAD file laden van disk (*L.) Syntax: *LOAD [loadadres] De opgegeven file wordt in het geheugen van de Atom geladen. Als er geen load adres wordt opgegeven dan wordt het load adres uit de file header gebruikt. Hier zijn in de filenaam geen jokers * en ? toegestaan. ~*LOCK maak file read-only (*LO.) Syntax: *LOCK Van alle gevonden files wordt het read-only attribuut bit gezet zodat deze niet meer gewist of overschreven kunnen worden. De files kunnen alleen nog maar gelezen worden. ~*MD maak directory Syntax: *MD Een nieuwe directory wordt aangemaakt indien het path geldig bevonden is. ~*MON message monitor Syntax: *MON Als MON actief is wordt de informatie van de file(s) weergegeven op het scherm na de uitvoering van de commando's *HIDE, *LOCK, *LOAD, *RUN, *SAVE, *UNHIDE en *UNLOCK. Voor het *DELETE commando geldt dat de files eerst op het scherm getoond worden en er vervolgens nog om een bevestiging gevraagd wordt alvorens de files te wissen. ~*NOMON message monitor off Syntax: *NOMON Heft de werking van *MON op. Er wordt na *HIDE, *LOCK, *LOAD, *RUN, *SAVE, *UNHIDE en *UNLOCK geen file informatie gegeven. Bij het *DELETE commando worden de files zonder verdere vragen gewist. Na het initialiseren van PC-DOS is *NOMON actief. ~*PC geeft besturing aan MS-DOS Syntax: *PC [msdos-commando] Als er geen MS-DOS commando opgegeven is dan wordt het Atom terminal programma be‰indigd. Als er wel een commando opgegeven is dan wordt dit uitgevoerd. Daarna draait het Atom terminal programma verder. ~*RD verwijder directory Syntax: *RD De opgegeven directory wordt van disk verwijderd als deze leeg is en niet de actuele directory is. ~*RESET Reset de Atom (*RE.) Syntax: *RESET Dit commando heeft niets met een Disk Operating Systeem te maken. Het zet eerst het reset type op #2 en laat vervolgens de Atom resetten. ~*RUN laadt en start file (*R.) Syntax: *RUN [programma parameters] De opgegeven file wordt van disk geladen en gestart op het executie adres. Het loadadres wordt uit de file header gelezen. Hier zijn in de filenaam geen jokers * en ? toegestaan. De default extensie voor een uitvoerbaar programma is '.RUN'. Als het opgegeven bestand niet gevonden wordt probeert PCDOS het bestand met deze extensie te laden. De gehele command line blijft vanaf adres #100 in het geheugen staan. Hierdoor kan het programma eventuele parameters opzoeken. ~*SAVE schrijf file naar disk (*S.) Syntax: *SAVE [execadres] Het geheugen van beginadres tot eindadres wordt onder de opgegeven naam naar disk geschreven. Bij het ontbreken van het executieadres wordt het beginadres op deze plaats ingevuld. Hier zijn in de filenaam geen jokers * en ? toegestaan. ~*SPOOL beeldschermuitvoer naar disk schrijven (*SP.) Syntax: *SPOOL Alle beeldschermuitvoer via de vector #FFF4 (#208) wordt eerst naar het opgegeven bestand geschreven. Dit commando wordt net als `*EXEC be‰indigd door het herstellen van de schrijfvector (bestand wordt niet afgesloten) of door het schrijven van de code 26 (het bestand wordt wel afgesloten). De handle van deze file is opgeslagen in adres #B9. ~*UNHIDE reset hidden attribuut (*U.) Syntax: *UNHIDE Van alle gevonden files wordt het hidden attribuut bit gewist. ~*UNLOCK reset read-only attribuut (*UNL.) Syntax: *UNLOCK Van alle gevonden files wordt het read-only attribuut bit gewist. ~ASC2BAS Lees asciifile en converteer naar basicprogramma Syntax: ASC2BAS [drive][path] Veel tekst-editors voor PC's werken prettiger dan de Atom basic editor. Een programma kan met zo'n editor ingetypt worden en met dit statement ingeladen worden, waarbij de ascii-file automatisch omgezet wordt naar een basicprogramma. Voor een goede werking dient de ascii-file uitsluitend uit basic regels te bestaan, eventuele spaties voor het regelnummer zijn toegestaan; regels zonder regelnummer niet! Het basicprogramma wordt geladen vanaf #2900. ~ATOMVDU Standaard Atom tekstscherm Syntax: ATOMVDU Met dit statement wordt de schrijfvector gezet naar de originele Atom schrijfroutine op #FE52. Alle tekst wordt dan in een 32*16 tekstscherm afgebeeld. Deze mode kan alleen gebruikt worden om tekst af te drukken, niet voor het editen van programma's. Alvorens dit statement te geven dient de Atom in CLEAR 0 gezet te zijn. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Voordat ATOMVDU gebruikt kan worden moet de karakterset ³ ³ ATOMVDU.FNT geladen zijn. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ~ATTRIB Zet tekst attribuut Syntax: ATTRIB a Het attribuut bepaalt de (achtergrond)kleur en intensiteit van een karakter in tekstmode. Voor kleurentekst modi hebben de bits de volgende betekenis: 7 6 5 4 3 2 1 0 ÚÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ¿ ³ K ³ achtergrond ³ I ³ voorgrond ³ ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÙ K: knipperen I: Intensiteit Voor de achtergrondkleur gelden de volgende waarden: 000 0 zwart 100 4 rood 001 1 blauw 101 5 magenta 010 2 groen 110 6 bruin 011 3 cyaan 111 7 wit Voor de voorgrondkleur gelden de volgende waarden: I = 0 I = 1 000 0 zwart 000 0 grijs 001 1 blauw 001 1 lichtblauw 010 2 groen 010 2 lichtgroen 011 3 cyaan 011 3 lichtcyaan 100 4 rood 100 4 lichtrood 101 5 magenta 101 5 lichtmagenta 110 6 bruin 110 6 geel 111 7 wit 111 7 helder wit Voor monochroomtekst modi hebben de bits de volgende betekenis: 7 6 5 4 3 2 1 0 ÚÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ¿ ³ K ³ achtergrond ³ I ³ voorgrond ³ ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÙ K: knipperen I: Intensiteit achtergrond voorgrond beeldscherm 000 000 geen beeld zwart 111 111 geen beeld wit (alleen VGA) 000 001 onderstreept 000 111 normaal 111 000 ge‹nverteerd ~CENTER calibreer joystick Syntax: CENTER Een analoge joystick dient voor gebruik eerst gecalibreerd te worden. Daarmee wordt als het ware het referentiepunt voor de neutraalstand bepaald. Bij het opstarten van het terminal programma wordt de joystick automatisch gecalibreerd. Als tijdens het werken met de Atom een (andere) joystick aangesloten wordt dient deze eerst met dit statement gecalibreerd te worden. ~CLW wis tekstvenster Syntax: CLW Hiermee kan het actieve tekstvenster gewist worden. De achtergrond wordt gevuld met de waarde in het attribuut byte. Dit in tegenstelling tot het CLS commando uit het Gagsrom; daar wordt de achtergrond zwart gemaakt en wordt het tekstwindow gereset. ~CURSOR cursor controle Syntax: CURSOR ON De knipperende cursor wordt aangezet. Syntax: CURSOR OFF De knipperende cursor wordt uitgezet. Syntax: CURSOR TO x,y De cursor wordt geplaatst op de positie (x,y) waarbij (0,0) de linker bovenhoek van het actieve tekstvenster is. Syntax: CURSOR POS x,y De positie van de cursor wordt opgeslagen in de variabelen x en y. Hierbij wordt geen rekening gehouden met eventueel actieve tekstvensters! Syntax: CURSOR POS c De variabele c wordt gevuld met de asciiwaarde van het karakter dat zich bevind op de cursorpositie. ~DATE opvragen systeemdatum Syntax: DATE [$x] Als er geen string wordt opgegeven wordt de datum op het scherm afgedrukt. Als wel een string opgegeven wordt komt de datum als ascii tekst in deze string te staan. ~DAY opvragen systeemdag Syntax: DAY [$x] Als er geen string wordt opgegeven wordt de dag op het scherm afgedrukt. Als wel een string opgegeven wordt komt de dag als ascii tekst in deze string te staan. ~ESCAPE uit- en inschakelen van escape toets Syntax: ESCAPE=ON of OFF Als een programma niet onderbroken mag worden door een druk op de escape toets kan deze hiermee uitgeschakeld worden. Hiertoe wordt de `OSBYTE -vector verlegd naar #703. OSBYTE-call #1 kan dan niet meer gebruikt worden. Een ander gebruik van dit statement kan zijn om te voorkomen dat de keyboard buffer van de PC steeds leeg is als een keyboardscan uitgevoerd wordt (OSBYTE #1 leest langzaam de keyboardbuffer leeg). Met ESCAPE=ON wordt de escape toets weer aangezet en het gebied #700 t/m #710 weer vrijgegeven. ~FONT laden van ramfont Syntax: FONT filespec Voor de grafische tekstmode `GTEXT, grafische CGA-karakters 128-256 en voor EGA/VGA tekstmodi kunnen hiermee karaktersets geladen worden. De filespec mag een driveletter en een zoekpad bevatten maar geen jokers * of ?. ~GTEXT initialiseren grafische tekstmode Syntax: GTEXT [filespec] GTEXT laat alle beeldschermuitvoer, die door de Atom geproduceerd wordt, in een grafische mode tekenen. Hierbij wordt de schrijfvector verzet naar de PCBOX. Deze tekstmode is niet geschikt voor het editen van programma's. Tevens zullen foutmeldingen en het `*CAT commando schrijven in de normale PC mode. Als een filespec wordt opgegeven wordt eerst een karakterset geladen. Deze filespec mag een driveletter en een zoekpad bevatten maar geen jokers * of ?. ~INP lees byte van PC I/O bus Syntax: INP adres,var Met dit statement kan I/O hardware, die op de PC is aangesloten, direct worden aangesproken. Het opgegeven adres wordt van de PC I/O bus gelezen en in de opgegeven variabele geplaatst. ~KADER teken kader Syntax: KADER xlo,ylo,xrb,yrb,mode,kleur De eerste vier parameters bepalen de afmetingen van het kader; xlo en ylo zijn de co”rdinaten van de linker onderhoek en xrb en yrb zijn de co”rdinaten van de rechter bovenhoek. Deze co”rdinaten gelden ten opzichte van de linker bovenhoek van het actieve tekstvenster. Voor mode mag een letter D of S gegeven worden. Het kader wordt dan getekend met dubbele resp. enkele lijnen. De kleur bepaalt het attribuut van de kaderlijnen. Na be‰indiging van het statement bevind de cursor zich in de linker bovenhoek van het kader. NB: Let erop dat het 7e bit niet gereset wordt. Zie het statement `MSB. ~LPT selecteer printer Syntax: LPT = printernummer Het kiezen van een printer kan met dit statement. Alle printeruitvoer na $2 wordt naar de opgegeven printer gestuurd. Dit statement is identiek aan het `PRN= statement. ~MENU opstarten !BOOT file Syntax: MENU Een mogelijkheid om een menu of grafisch gebruikersinterface te maken begint met het menu statement. De exit-vector wordt gezet naar een routine die van de actuele drive de file !BOOT in de directory \ATOM opstart. Deze !BOOT-file mag een basic of assembler programma zijn, zolang deze maar gestart kan worden met `*RUN. Als de file \ATOM\!BOOT niet gevonden wordt volgt een melding. Met wordt het statement afgebroken, met wordt opnieuw geprobeerd, maar dan op een andere disk. Alle programma's die eindigen met het `EXIT statement of met OSBYTE #6 laden automatisch de !BOOT-file opnieuw. Een programma dat eindigt met END of een RTS instructie komt terug in basic. Door dan het commando EXIT te geven wordt het menu alsnog gestart. ~MOUSE muis controle Syntax: MOUSE commando parameters Na het MOUSE statement volgt nog een tweede statement. Een beschrijving van deze statements staat hieronder beschreven. MOUSE BUTTON knop,P/R,result,x,y Hiermee kan de beweging van de afzonderlijke muistoetsen gelezen worden. Met de waarde 'knop' wordt een van de toetsen opgegeven. P/R leest het aantal keren dat een toets ingedrukt of losgelaten is. Het aantal keren komt in de variabele 'result' en de muispositie van de laatste actie staat in de variabelen x en y. MOUSE CHAR c In tekstmode wordt het karakter op de muiscursor- positie gelezen en in de variabele c gezet. In grafische modi is het resultaat niet gedefini‰erd. MOUSE CURTYPE S,screenmask,cursormask Met curtype kan bepaald worden hoe de muiscursor op het scherm verschijnt. De tekstcursor kan bestaan uit een hardware cursor (de "normale" cursor) of een software cursor. Met bovenstaand commando wordt de software tekstcursor zichtbaar gemaakt. Om deze cursor op het scherm zichtbaar te maken voert de muisdriver eerst een AND functie uit met het screenmask en het resultaat daarvan ondergaat een EXOR met het cursormask. Aangezien zowel het karakter als het attribuut gewijzigd kunnen worden, zijn screenmask en cursormask 16-bits getallen. Houdt er rekening mee dat het hoge byte van deze waarden betrekking heeft op het attribuut en het lage byte heeft betrekking op het karakter. Om bijvoorbeeld de muiscursor te wijzigen in een * kan gegeven worden 'MOUSE CURTYPE S,#FF00,#2A'. MOUSE CURTYPE H,upper_scanline,lower_scanline De hardware muiscursor is dezelfde als de hardware tekstcursor (dat zenuwachtig knipperend streepje). De twee parameters geven de eerste en laatste beeldlijn van de cursor aan. MOUSE CURTYPE G,maskeradres,x_hotspot,y_hotspot De grafische muiscursor kan ook geheel door de programmeur gedefini‰erd worden. Deze definitie bestaat net als bij de software textcursor uit een screenmask en een cursormask. Bij het plaatsen van de muiscursor op het scherm wordt eerst een AND uitgevoerd van de inhoud van het beeldscherm en het screenmask, vervolgens wordt een EXOR uitgevoerd met het resultaat van voorgaande AND functie en het cursormask. Het maskeradres wijst naar een datablok dat beide maskers bevat, de eerste 32 bytes zijn het screenmask (16 * 16 bits) en de tweede 32 bytes zijn het cursormask (16 * 16 bits). De overige twee parameters geven aan waar de hot-spot van de muis zich in de cursor bevind. MOUSE COUNT x,y De verplaatsing van de muis sinds de laatste oproep wordt geplaatst in de variabelen x en y. MOUSE INIT [b] De muis wordt ge‹nitialiseerd. Als een variabele meegegeven is wordt het aantal muisknoppen in deze variabele gezet. Als op de PC geen muisdriver actief is dan krijgt deze variabele de waarde 255. MOUSE KVO De afkorting KVO staat voor Kees van Oss. Bij dit statement wordt de positie van de muis gelezen, omgerekend naar het formaat van de muisdriver 'mINTER' van Kees en in de variabelen X, Y en Z geplaatst. Hiermee kunnen bestaande muisgestuurde programma's eenvoudig aangepast worden. Voor een goede werking dient de muis opgesloten te worden in een window middels MOUSE WINDOW 0,191,255,0. MOUSE OFF Hiermee wordt de muiscursor van het scherm gehaald. De muisbewegingen en toetsen worden wel nog door de PC bijgewerkt en kunnen altijd opgevraagd worden. Door de muiscursor uit te schakelen kunnen sprites van het Gagsrom door de muis bewogen worden. MOUSE ON Maak de muiscursor zichtbaar op het scherm. MOUSE POS x,y,k De positie van de muis wordt opgeslagen in de variabelen x en y. De status van de knoppen wordt in de laagste drie bits van de variabele k opgeborgen. Bit 0 is rechter muisknop, bit 1 is linkerknop en bit 2 is, indien aanwezig, de middelste knop. MOUSE TO x,y Zet de muiscursor op de positie x,y. MOUSE WINDOW xlo,ylo,xrb,yrb De bewegingsvrijheid van de muis wordt beperkt in het opgegeven venster. Als bij het initialiseren van het venster de muis zich buiten dit venster bevind, dan wordt deze alsnog in het venster geplaatst. ~MSB masker voor 7e bit in tekstmodi Syntax: MSB = masker Waarbij masker de waarde voor masker 0 of 1 is. Als het masker '0' is dan wordt van ieder af te drukken karakter bit 7 gewist. De asciiwaarden #80 t/m #9F geven dan de speciale symbolen die vervallen in verband met de controlcodes. ~PRN selecteer printer Syntax: PRN = printernummer Het kiezen van een printer kan met dit statement. Alle printeruitvoer na $2 wordt naar de opgegeven printer gestuurd. Dit statement is identiek aan het `LPT= statement. ~OUT schrijf byte naar PC I/O bus Syntax: OUT adres,data Met dit statement kan I/O hardware, die op de PC is aangesloten, direct worden aangesproken. De opgegeven data wordt naar het opgegeven PC I/O bus adres geschreven. ~PCBOX geeft versienummer en overzicht statements Syntax: PCBOX ~REPORT verklaar nummer van foutmelding Syntax: REPORT errornummer Standaard worden foutmeldingen als tekst gegeven. In sommige gevallen, bijvoorbeeld als een programma begint met het PROGRAM statement uit P-Charme, verschijnt toch nog de oude foutmelding. Aan de hand van de foutcode kan alsnog om de betekenis van de foutmelding gevraagd worden. Met REPORT 0 wordt een versie/datum string op het scherm afgebeeld. ~SCAN uitvoeren van bios toetsenbordroutines Syntax: SCAN functie,resultaat Afhankelijk van het functienummer wordt een routine van PC INT 16H uitgevoerd. Het register AX wordt in de variabele 'resultaat' geplaatst. Functie 0: Deze functie leest een teken uit het toetsenbord buffer. Als deze leeg is wordt gewacht totdat een toets wordt ingedrukt. Het gelezen teken wordt uit de buffer verwijderd. Functie 1: Deze functie kijkt of een teken in de toetsenbordbuffer klaarstaat. Als dat het geval is wordt de waarde ervan als resultaat teruggegeven. (Bij een lege buffer is het resultaat #0101). Het gelezen teken wordt niet uit de buffer verwijderd zodat het nogmaals met functie 0 of functie 1 gelezen kan worden. Functie 2: Deze functie bepaalt de status van een aantal toetsenbord-modi en geeft de status van de shift, ctrl en alt toetsen weer. Bij gebruik van het SCAN statement dient u er rekening mee te houden dat er verschillende kunnen optreden bij gebruik van een XT of AT. Met name de scan-codes kunnen afwijken! ~TIME opvragen systeemtijd Syntax: TIME [$x] Als er geen string wordt opgegeven wordt de tijd op het scherm afgedrukt. Als wel een string opgegeven wordt komt de tijd als ascii tekst in deze string te staan. ~TSIZE zet afmetingen tekst Syntax: TSIZE x,y Met dit statement kunnen de afmetingen van karakters in `GTEXT ingesteld worden. De eerste parameter zorgt voor bredere karakters en de tweede parameter zorgt voor hogere karakters. ~TWINDOW zet tekstvenster Syntax: TWINDOW xlo,ylo,xrb,yrb De opgegeven co”rdinaten bepalen de positie van het tekstvenster. Buiten dit venster kan de Atom niet schrijven. Deze co”rdinaten gelden altijd ten opzichte van de linker bovenhoek van het scherm. ~TWOFF reset tekstvenster Syntax: TWOFF Het tekstvenster wordt opgeheven. Hierbij wordt het scherm niet gewist. ~txmod schakel naar normaal tekstscherm Syntax: TXMOD De grafische modi, `GRMOD uit josbox en `GTEXT worden hiermee afgesloten. Testvensters worden gereset en het scherm wordt gewist. Verder wordt het video interrupt geblokkeerd. ~UDS defini‰er karakter Syntax: UDS karakter,d0,...,d15 Voor de grafische karakterset kunnen met UDS karakters gedefini‰erd worden. De eerste parameter is de ascii waarde van het te defini‰ren karakter. De overige zestien parameters bepalen het bitpatroon van het karakter. ~CHIP x - Dit statement schakelt de opgegeven rombank voor. ~EXIT - Veroorzaakt een sprong naar de EXIT-vector. Deze wijst normaal naar het END-statement. ~LATCH - geeft de status van de latch op de Atomkaart weer. Hiertoe worden beide schaduwbytes gelezen. De bits van de latch op #B888 hebben de volgende betekenis: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÄÄÁÂÄÙ ³ ³ ³ ³ ³ ÀÄÄÂÄÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ schakelbits voor utility rom ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ niet gebruikt ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ niet gebruikt ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ video interrupt enable ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ write protect ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ o.s. ram/rom ~LOCK x - Dit commando schakelt de opgegeven rombank voor en zet deze vast. ~OSV - Toont alle operating systeem vectoren met hun adressen. ~SYST - Geeft een lijstje met alle statements en hun beginadressen. ~SYSV - In direct mode geeft dit statement het versienummer van operating systeem, schakelsoft en terminalprogramma, alsmede het processortype. In programma mode verwacht SYSV een versienummer als parameter. Indien het versienummer van het terminalprogramma lager is dan de opgegeven versie genereert dit statement een passende melding, direct gevolgd door een error94. ~WP - Write protect; WP ON zet write protect aan; WP OFF zet write protect uit. ~XMS functie,pgnr Basic statement om XMS pagina's te wisselen functie: I zet XMS frame op pgnr, binnen de Atom (!) functie: R zet XMS pagina pgnr voor, data wordt niet weggeschreven functie: W zet XMS pagina pgnr voor, data wordt niet ingelezen functie: P zet XMS pagina pgnr voor, data wordt weggeschreven en ingelezen ~SCAN_CODES : Shift-Tab 15 F1 ... F10 59 - 68 Shift-F1 ... Shift-F10 84 - 93 Ctrl-F1 ... Ctrl-F10 94 - 103 Alt-F1 ... Alt-F10 104 - 113 Alt-1,2,3,4,5,6,7,8,9,0,-,= 120 - 131 Alt-Q,W,E,R,T,Y,U,I,O,P 16 - 25 Alt-A,S,D,F,G,H,J,K,L 30 - 38 Alt-Z,X,C,V,B,N,M 44 - 50 Cursor omhoog 72 Cursor omlaag 80 Cursor links 75 Cursor rechts 77 Ctrl-cursor links 115 Ctrl-cursor rechts 116 Ins, Del, Home, End, PageUp,PageDown 82, 83, 71, 79, 73, 81 Ctrl-Home, Ctrl-End 119, 117 Ctrl-PageUp, Ctrl-PageDown 132, 118 ~DTA - MSDOS Disk Transfer Area De DTA is een blok van oorspronkelijk minstens 43 bytes. Hiervan zijn er 21 gereserveerd voor MS-DOS en deze worden door de Atom niet gebruikt. De Atom kan alleen informatie lezen uit de DTA en heeft zodoende aan de overige 22 bytes genoeg. In het DTA is de volgende informatie opgeslagen: byte 0 : attribuut van het gevonden bestand byte 1-2 : tijd laaste wijziging byte 3-4 : datum laatste wijziging byte 5-8 : lengte van het bestand byte 9-21 : naam van het bestand (normale ascii string) Deze informatie heeft betrekking op de DTA die bij de Atom bekend is en niet de originele MS-DOS DTA. De tijd heeft de volgende vorm: ÚÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ ³u³u³u³u³u³m³m³m³m³m³m³s³s³s³s³s³ ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ ÀÄÄÄÂÄÄÄÙ ÀÄÄÄÄÂÄÄÄÄÙ ÀÄÄÄÂÄÄÄÙ ³ ³ ÀÄÄÄÄÄÄÄÄ seconden/2 (0..29) ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ minuten (0..59) ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ uren (0..23) De datum heeft de volgende vorm: ÚÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ ³j³j³j³j³j³j³j³m³m³m³m³d³d³d³d³d³ ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ ÀÄÄÄÄÂÄÄÄÄÄÄÙ ÀÄÄÂÄÄÙ ÀÄÄÄÂÄÄÄÙ ³ ³ ÀÄÄÄÄÄÄÄÄ dag (1..31) ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ maand (1..12) ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ jaar-127 (0..127) Het attribuutbyte heeft de volgende betekenis: ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿ ³ 0 ³ 0 ³ A ³ D ³ V ³ S ³ H ³ R ³ ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ ³ ³ ³ ³ ³ ÀÄÄÄ 1 = read-only ³ ³ ³ ³ ÀÄÄÄÄÄÄÄ 1 = hidden ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ 1 = system ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = volume label ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = directory ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 = archief ~ROLAND LEURS Is een zeer slimme knul uit het zuiden des lands die een PC-insteekkaart ontwikkelde waarop een hele Atom is opgebouwd. Samen met een uitgebreid terminalprogramma {Atom.Com} kunnen alle mogelijkheden van een PC worden benut. Roland werd in 1984 lid van de Atom Computerclub en heeft sindsdien vele artikelen en ontwerpen uit Atom Nieuws op zijn naam staan. In 1988 werd hij free-lance redactie-medewerker en in 1989 redactielid van zojuist genoemd blad. ~PASCALLE LEURS Is een van de liefste vrouwen op de hele wereld. Zij is in juli 1992 met `Roland getrouwd (zie voorpagina AtomNieuws 11.2, op het TV-schermpje bovenaan in het midden. Pascalle geeft soms zeer goede tips in verband met het oplossen van een moeilijk COMPUTERprobleem. Ook deze helptekst is van haar hand (behalve dit trefwoord). Verder is ze ook graag bezig met computers en houdt zij van soap-series zodat ze niet altijd verveeld op Roland hoeft te wachten .... ~JUNIOR Is het "project" waar `Pascalle en `Roland samen aan gewerkt hebben; dit heeft echter helemaal niets met computers te maken. Pascalle raakte halverwege 1997 in verwachting. Aangezien op moment van schrijven het kind nog niet geboren is wordt deze aangeduid met Junior. Nu, 2e Kerstdag, is Pascalle bijna zeven maanden zwanger en alles verloopt nog voorspoedig. Middels updates in deze helptekst wordt u verder op de hoogte gehouden :-) ~AUTO regelnr,stap Automatisch regelnummers genereren Het AUTO statement vereenvoudigt het intikken van programma's met zijn dubbele functie. Behalve automatisch regelnummers aanmaken wordt er bij de volgende regel automatisch ingesprongen. De parameter 'regelnr' is het eerste regelnummer, 'stap' is de stapgrootte tussen twee regelnummers. Beide parameters zijn optioneel en mogen dus weggelaten worden. In dat geval is de standaardwaarde 10. ~BEEP hoogte,duur Geluid opwekken Met dit statement wordt een toon opgewekt d.m.v. `OSBYTE#05. De hoogte mag niet boven 96 liggen. De duur van de toon wordt opgegeven in 18den van seconden. ~BSAVE "filenaam" Basic programma saven Dit statement is speciaal bedoeld om basic programma's te saven. De syntax is hetzelfde als die van SAVE. Het executie-adres van de ge-save-de file is #AFAF. NB: Voor de Atom in PC is dit statement overbodig; het normale SAVE statement geeft nu als executieadres #F144. Hier staat een verbeterde auto-start routine. ~CASE expressie OF case-blok Het begin van een CASE blok. Het is bedoeld om uit verschillende mogelijkheden er slechts een te kiezen. De expressie kan een variabele of een berekening zijn. De volgende regels beginnen met een case-label <....>; als in een case-blok de expressie voldoet aan een case-label dan wordt de regel achter dat label afgewerkt. Een case-blok eindigt met het `CEND statement. voorbeeld: 10 CASE J-48 OF 20 <2> PRINT "DIT IS EVEN"' 30 <3> PRINT "DIT IS " 40 PRINT "ONEVEN"' 50 <1> PRINT "J=49"' 60 CEND ~CAT catalog Hiermee kunnen alle basicprogramma's tussen #400 en #A000 opgezocht worden, mits deze met het PROGRAM statement beginnen. Op het scherm verschijnt een lijstje met de programma's en hun beginpagina. ~CEND afsluiten van case-blok Hiermee wordt een case-blok, dat begint met het `CASE -statement, afgesloten. Voor een goede werking dient CEND aan het begin van een regel te staan en mag het niet worden afgekort. ~CONT ga verder met programma Met het statement `STOP kan een programma op een bepaalde plaats gestopt worden. Er volgt dan de melding STOP AT xxx. Met CONT kan met de uitvoering van het programma vanaf die plaats verder gegaan worden. ~COPY bbbb, eeee, dddd geheugenblok kopieren Het geheugengebied van bbbb tot en met eeee wordt gekopieerd naar dddd. Als dddd tussen bbbb en eeee in ligt dan volgt een soort fill-statement waarbij het geheugen gevuld wordt met de bytes tussen bbbb en dddd. Voorbeeld: COPY 32000,33000,32004 Na afloop van dit statement is het gebied tussen 32000 en 33000 gevuld met steeds dezelfde 4 bytes. ~COS speed selecteer 300/1200 baud cassette systeem Een 1200 baud routine wordt ingeschakeld met COS 1 en een 300 baud routine wordt ingeschakeld met COS 0. Aangezien de Atom-in-PC geen cassette operating systeem ondersteund is dit statement geheel overbodig geworden. ~DATA gegevensopslag in basicregels De regel achter DATA wordt niet verder geinterpreteerd; die is bedoeld voor opslag van gegevens die met het `READ statement opgevraagd kan worden. Dit statement dient het eerste van een regel te zijn en mag niet worden afgekort. ~DEL regels verwijderen Met DEL kunnen op snelle manier regels uit een basicprogramma verwijderd worden. Als parameters kunnen opgegeven worden: DEL x , y verwijder regel x t/m y DEL x , verwijder alles vanaf regel x DEL , y verwijder alles tot en met regel y DEL /string/ verwijder alle regels waar 'string' in voorkomt Als extra optie kan gegeven worden V - vraag eerst of regel verwijderd mag worden L - laat alle verwijderde regels nog even zien ~ELSE alternatief bij XIF statement Dit statement heeft twee betekenissen: - moeder van `Pascalle, dus schoonmoeder van `Roland en oma van `Junior - alternatief bij `XIF statement, zie aldaar ~EVEN (argument) functie Als het argument even is dan geeft deze functie de waarde TRUE (=1) terug. In het andere geval wordt de waarde `FALSE (=0) teruggegeven. ~FALSE functie Deze functie geeft altijd de waarde 0 terug. ~FEND einde FUNCTION blok Dit is het statement dat het eind aangeeft van een `FUNCTION -blok. FEND behoort het eerste statement op de regel te zijn en mag niet worden afgekort. ~FUNCTION definitie van een functie Functies kunnen gebruikt worden om in een stuk programma een waarde te berekenen en die waarde vervolgens te gebruiken in een expressie. Het functie blok begint met het woord FUNCTION en eindigt met `FEND. Voor een uitgebreide uitleg wordt toch verwezen naar de handleiding van P-Charm of naar de vele artikelen hierover in Atom Nieuws. ~HEX adres hex/ascii dump Vanaf het opgegeven adres wordt een gecombineerde hexdump/asciidump gegeven. Alle niet-ascii tekens worden weergegeven als een '.' Hex dumpt in een 32 kolommen scherm. ~HTAB x horizontale tab De cursor wordt x karakters van de linker kantlijn gezet. ~ICOPY bbbb,eeee,dddd intelligent kopieeren Het geheugengebied bbbb tot en met eeee wordt gekopieerd naar dddd. Als dddd tussen bbbb en eeee ligt volgt geen fill effect; het is hierdoor dus mogelijk om een stuk geheugen over bijvoorbeeld 1 byte te verschuiven. ~INKEY k wacht op toetsaanslag Het INKEY statement wacht totdat een toets wordt ingedrukt. De ascii waarde van die toets wordt in de variabele k (A...Z) opgeslagen. ~INSTR in string ? Met behulp van deze integer functie kan in een bepaalde string worden gezocht naar een andere string. De syntax is: INSTR( string1, string2) waarbij de haakjes verplicht zijn. De string mag zowel als $ gegeven worden of als "string". Het resultaat van de functie is de positie waar de tweede string in de eerste string voorkomt. Als de tweede string niet in de eerste voorkomt dan is het resultaat 0. ~KEY k voer toetsenbord scan uit Het KEY statement kijkt of er een toets wordt ingedrukt. Zo ja, dan wordt de variabele k (A...Z) gevuld met de ascii waarde van die toets. Anders wordt de variabele k gelijk aan 0. Dit statement wacht niet totdat een toets wordt ingedrukt. ~NOT ontkennen Deze functie voert een logische ontkenning uit. Als het argument van NOT 0 is, is het resultaat <>0 en vise versa. ~ODD (argument) functie Als het argument oneven is dan geeft deze functie de waarde `TRUE (=1) terug. In het andere geval wordt de waarde `FALSE (=0) teruggegeven. ~ON diverse mogelijkheden ON ERROR fout opvangen Als er tijdens de uitvoering van een programma een fout optreedt wordt de uitvoering voortgezet achter het ON ERROR statement. Bovendien worden dan FOR....NEXT, DO....UNTIL en GOSUB....RETURN lussen vergeten. Let erop dat in de ON ERROR routine geen fout staat. ON ... GOSUB gosub selector Dit statement geeft de mogelijkheid om te kiezen uit een aantal mogelijke subroutines. Syntax: ON expr GOSUB line, line, line, ... Hierin is line een regelnummer of een label. Afhankelijk van de waarde van de expr wordt gesprongen naar de eerste, tweede, derde etc subroutine. Als expr groter is dan het aantal opgegeven subroutines wordt er niet gesprongen. ON ... GOTO goto selector Hetzelfde als ON ... GOSUB, maar dan voor sprongen via GOTO. ~PAUSE duur pauze, lekker niets doen Er wordt gewacht in eenheden van 1/18e seconden. De totale schafttijd is dus duur/18 seconden. ~PEND einde procedureblok Dit is het statement dat het eind aangeeft van een function-blok. PEND behoort het eerste statement op de regel te zijn en mag niet worden afgekort. ~PROC definitie van een functie Procedures kunnen gebruikt worden om een sub-programma te creeeren die aangeroepen kunnen worden vanuit het hoofdprogramma, andere procedures of door zichzelf (dus recursie!). Voor een uitgebreide uitleg wordt toch verwezen naar de handleiding van P-Charm of naar de vele artikelen hierover in Atom Nieuws. ~POP uitnodiging om niet netjes te programmeren Dit statement haalt een returnadres van de GOSUB stack. Dit schijnt handig te zijn indien een programma tijdens het uitvoeren van een programma zich in een subroutine bedenkt en geen RETURN wil uitvoeren, maar op een andere manier uit de subroutine wil springen. Een POP voorkomt dat er in dat geval problemen met de stack ontstaan, maar bevordert de toch al aantrekkelijke spaghetti programmastructuur. ~PROGRAM programma heading Een programma dat optimaal gebruik wil maken van P-Charme begint met het PROGRAM statement. Achter program mag een naam voor het programma komen te staan en eventueel nog wat extra tekst. Behalve het programma een naam geven doet PROGRAM nog wat meer: Automatische restore aan het begin van het programma Initialisatie van procedures en functies Initialisatie van ingebouwde functies Initialisatie error aanwijsroutine Initialisatie multidimensionale array's Initialisatie while loops Herkenning t.b.v. van statement `CAT De BRKVEC wordt voor de duur van het programma verzet naar P-Charme. Een goede naam voor het programma begint met twee verschillende letters en eindigt met een karakter dat kleiner is dan de ascii waarde van de letter 'A', met uitzondering van het - teken. Een programma dat ergens in het geheugen staat en begint met PROGRAM kan door de naam in te geven gestart worden. PROGRAM moet het eerste statement van het programma zijn en mag niet worden afgekort. ~READ lees data Met het read statement kunnen integer, floating point, array en string variabelen worden ingelezen. De gegevens voor het READ statement staan opgeslagen in de regels die met `DATA beginnen. De allereerste READ opdracht begint bij de eerste DATA regel te lezen (mits het programma begint met PROGRAM). De pointer voor het READ statement kan gewijzigd worden met het `RESTORE statement. ~RENUM regelnr,stap hernummer programma Dit statement hernummert een basic programma waarbij rekening gehouden wordt met GOTO, GOSUB, RESTORE en ON ... GOSUB/GOTO. De parameter 'regelnr' is het eerste regelnummer, 'stap' is de stapgrootte tussen twee regelnummers. Beide parameters zijn optioneel en mogen dus weggelaten worden. In dat geval is de standaardwaarde 10. ~STOP stop het programma Tijdens het foutzoeken kan STOP gebruikt worden om het programma tijdelijk te onderbreken. Er volgt een melding STOP AT LINE xxx. Er kunnen dan bijvoorbeeld variabelen worden bekeken of gewijzigd. Het programma zelf mag niet gewijzigd worden. De uitvoering kan voortgezet worden met `CONT. ~TRUE waar Deze functie levert altijd de waarde 1 op. ~VAR variabele dump Dit statement drukt in twee kolommen de variabelen A tot en met Z af. ~VTAB y vertikale tabulatie De cursor wordt aan het begin van regel y gezet. De bovenste regel is regel 0. ~WEND einde WHILE lus Dit statement is het einde van een `WHILE lus. WEND behoort het eerste statement op de regel te zijn en mag niet worden afgekort. ~WHILE expr begin WHILE - WEND lus Een WHILE lus, die begrenst moet zijn door WHILE en `WEND, wordt net zolang uitgevoerd totdat de expressie achter WHILE gelijk aan FALSE wordt. Indien de expressie al bij het begin false is, wordt het hele WHILE blok overgeslagen. Als de lus verlaten wordt gaat het programma verder achter het WEND statement. WHILE mag tot 10 niveau's genest worden, niet afkorten en moet aan het begin van de regel staan. ~XIF expr THEN ... expanded IF Het XIF statement behoort te worden gebruikt samen met het `ELSE statement. Indien de expressie achter XIF de waarde `TRUE oplevert wordt het gedeelte achter THEN wel uitgevoerd en het stuk achter ELSE niet. Indien de expressie de waarde FALSE oplevert dan wordt het stuk achter THEN niet uitgevoerd maar wel het stuk achter ELSE. THEN mag eventueel weggelaten worden. Voor een goede werking moeten XIF en ELSE aan het begin van de regel staan en mogen ze niet worden afgekort. Merk op dat het gedeelte achter THEN uit meerdere regels mag bestaan, maar het gedeelte achter ELSE mag maar uit een regel bestaan. ~ZERO variabelen wissen Dit is een statement dat de variabelen A t/m Z vult met de waarde 0. ~FIND string zoek string De opgegeven string wordt gezocht in het aanwezige basicprogramma. De string mag als $ opgegeven worden of als "string". ~FCOS 1200 baud COS - Niet meer van toepassing bij de Atom-in-PC ~SCOS 300 baud COS - Niet meer van toepassing bij de Atom-in-PC ~XDUMP bbbb [,[eeee]] hexadecimale/ascii dump Geeft een 32 koloms hex/ascii dump. ~HDUMP bbbb [,[eeee]] hexadecimale/ascii dump Geeft een 32 koloms hex/ascii dump. ~DISAS bbbb [,[eeee]] dis-assembler Disassembleert het opgegeven geheugengebied. ~STEP [,display] single step routine Een machinetaal programma wordt stap voor stap doorlopen. Na iedere instruktie wordt een disassembler gegeven met de actuele register inhouden. Gewacht wordt op een druk op de spatiebalk. Als display gegeven is wordt pas vanaf dat adres begonnen met het afdrukken op het scherm. Alle instrukties tussen 'start' en 'display' worden dan normaal uitgevoerd. De registers A, X en Y kunnen bij het begin gezet worden door de variabelen A, X en Y. ~PLAY noot [, noot, noot etc] Speelt noten in drie oktaven. Wordt niet ondersteund bij de Atom in PC. ~SHAPE adres teken figuurtje Hiermee wordt een opgegeven figuur op het scherm getekend volgens een "gepackte" tabel op locatie 'adres'. Het eerste byte van de SHAPE tabel geeft de lengte van de tabel aan. De volgende bytes geven informatie over de te plotten figuur. opdracht 1 opdracht 2 ÚÄÄÄÄÄÁÄÄÄÄÄ¿ ÚÄÄÄÄÄÁÄÄÄÄÄ¿ ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿ byte ---> ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ ÀÄÂÄÙ ÀÄÂÄÙ ÀÄÂÄÙ ÀÄÂÄÙ plotpar. richting plotpar richting De plotparameter wordt als volgt bepaald: 00 : move 01 : set (wit) 10 : inv (wit <> zwart) 11 : reset (zwart) De richting wordt als volgt bepaald: 00 : links 01 : rechts 10 : omhoog 11 : omlaag Er komen dus twee plot opdrachten per byte. De positie van het figuurtje wordt met het move statement bepaald. ~RELOC bbbb,eeee,dddd verplaats machinetaal programma Het gebruik van RELOC lijkt op COPY; het geheugenblok van bbbb t/m eeee wordt gekopieerd naar dddd waarbij eventuele adressen automatisch aangepast worden. ~GRMOD tekst in grafische mode Geeft de mogelijkheid om tekst te gebruiken in de Atom clear 4 mode; tekst en grafics kunnen door elkaar heen gebruikt worden. ~DISK reset Disk operating systeem vectoren (JBOX t/m v2.1) Dit statement initialiseert het DOS. ~USR aaaa machinetaal programma starten Het statement USR werkt hetzelfde als LINK met het verschil dat de registers A, X en Y in de laagste bytes komen te staan van de gelijknamige basic variabelen. Op die manier kan eenvoudig een eventueel resultaat van een routine via de registers naar het oproepende basicprogramma gegeven worden. ~SPRITE Sprite functies Syntax: SPRITE BASE xmsbase, n Dit is het eerste statement dat aangeroepen moet worden als een programma gebruik maakt van sprites. 'xmsbase' is de XMS pagina waar de eerste sprite opgeslagen wordt. In de variabele 'n' wordt het hoogst bruikbare spritenummer teruggegeven. Syntax: SPRITE DEF sprnr, addr, s Stuurt een spritedefinitie naar de pc. De sprite wordt opgeslagen onder het 'sprnr'; de sprite data staat op 'addr' en is 1 kB groot. In de variabele 's' wordt de status teruggezet. Mogelijke waarden zijn: #00 alles ok, sprite gedefini‰erd #10 fout, geen XMS geheugen beschikbaar voor sprites #20 fout, ongeldig spritenummer #30 combinatie van beide fouten Syntax: SPRITE SET sprnr,x,y,s Plaats sprite 'sprnr' op positie (x,y) op het scherm; de co”rdinaten worden opgenomen in de sprite administratie. De achtergrond wordt opgeslagen in het XMS geheugen. In de variabele 's' wordt de status teruggemeld; zie statement SPRITE DEF. Syntax: SPRITE UNSET sprnr,s Verwijdert sprite 'sprnr, van het scherm; de achtergrond wordt hersteld. In de variabele 's' wordt de status teruggemeld; zie statement SPRITE DEF. Syntax: SPRITE MOVE sprnr,x,y,s Verplaatst de sprite 'sprnr' naar de nieuwe positie (x,y) en werkt de administratie bij. Achtergrond wordt weer hersteld en in de variabele 's' wordt de status teruggemeld. Zie SPRITE DEF. Syntax: SPRITE PUT sprnr,x,y,s Dit statement is gelijk aan SPRITE SET maar slaat de achtergrond niet op en de sprite wordt niet in de administratie opgenomen; derhalve kan deze niet verplaatst of gewist worden met SPRITE MOVE resp. SPRITE UNSET. Syntax: SPRITE POS sprnr,x,y,s Van de sprite 'sprnr' worden de x- en y-co”rdinaat opgeslagen in de opgegeven variabelen. In 's' wordt de status geplaatst. Syntax: SPRITE HIT sprnr1,sprnr2,s Test op overlap van de sprites 'sprnr1' en 'sprnr2'; het resultaat wordt geplaatst in de statusvariabele 's'. Indien voor sprnr2 de waarde -1 opgegeven wordt test het statement op overlap tussen 'sprnr1' en de muiscursor. De betekenis van de acht laagste bits van de variabele 's' is weergegeven bij `PCCOM#65. ~OSBYTE routines `OSBYTE#00 druk o.s. versie nummer af `OSBYTE#01 test escape toets `OSBYTE#02 initialiseer alternatieve graphics mode `OSBYTE#03 initialiseren/opvragen VDU mode `OSBYTE#04 wacht op PC timertick `OSBYTE#05 produceer geluid `OSBYTE#06 spring naar exit vector `OSBYTE#07 opvragen/wijzigen exit vector `OSBYTE#08 opvragen processor gegevens `OSBYTE#09 instellen van pieptoon $7 `OSBYTE#0A reset semafoor voor PC communicatie `OSBYTE#0B test en set semafoor voor PC communicatie `OSBYTE#0C wek foutmelding op `OSBYTE#0D geeft tekst voor foutmelding `OSBYTE#0E keyboard scan `OSBYTE#F0 XMS versie opvragen `OSBYTE#F1 XMS pagina voorzetten (no save) `OSBYTE#F2 XMS pagina voorzetten (no load) `OSBYTE#F3 XMS pagina voorzetten `OSBYTE#F4 XMS paginaframe instellen/opvragen Een osbyte routine wordt opgeroepen via de vector #FFC2 met het nummer van de routine in de Accu. Eventuele parameters kunnen via het X en Y register meegegeven worden. Uitleg over deze routines kan opgevraagd worden met HELP gevolgd door het keyword OSBYTE#xx waarbij xx voor het gewenste nummer staat. ~PC-COMMANDO lijst van PC-commando's Het Atom Terminal programma herkent de volgende commando's: #00 Druk $0 af #01 Keyboard scan #02 Lees karakter op cursorpositie #03 Plot pixel #04 Initialiseer grafische mode #05 Plot pixel in clear 4 co”rdinatenstelsel #06 Ramfont laden #07 Schrijf string in grafische mode #08 Zet horizontale en vertikale schaalfactor #09 Zet cursor aan #0A Zet cursor uit #0B File van disk laden #0C File naar disk schrijven #0D Disk catalog op scherm afbeelden #0E Veranderen/opvragen van huidige directory #0F Verwijder directory #10 Maak directory aan #11 Verwijder file van disk #12 Lock files #13 Unlock files #14 Verander actuele drive #15 Ga naar MS-DOS #16 Maak file verborgen #17 Maak files weer zichtbaar #18 Opvragen file informatie #19 Produceer geluid #1A Instelling bell-toon #1B Druk foutmelding af #1C Oproepen muisfunctie (PC INT 33) subfunctie #80: initialiseer muis subfunctie #81: initialiseer muis voor CLEAR 4 subfunctie #82: muis informatie opvragen subfunctie #83: muis cursor aanzetten subfunctie #84: muis cursor uitzetten subfunctie #85: muis informatie opvragen binnen CLEAR 4 subfunctie #86: CLEAR 4 muiscursor selecteren subfunctie #87: muiscursor selecteren #1D Definieer muiscursor #1E Opvragen cursorpositie #1F Oproepen video functies (PC INT 10) #20 Oproepen seri‰le communicatie functies (PC INT 14) #21 Oproepen printer functies (PC INT 17) #22 Oproepen MS-DOS functies (PC INT 21) #23 Lees I/O byte #24 Schrijf I/O byte #25 Defini‰er grafische letter #26 Opvragen muis aktiviteiten #27 Opvragen PC informatie #28 Emulatie clear 0 #29 Wijzigen van palet of achtergrondkleur in CGA modi #2A t/m #31 Emulatie grafische Atom modi #32 Inschakelen extended video mode #33 Zet graphics kleur voor extended video mode #34 Schrijf grafisch pixel in extended video mode #35 Instellen tekstvenster #36 Opheffen tekstvenster #37 Joystick uitlezen #38 Joystick calibreren #39 Masker bit 7 instellen #3A Oproepen keyboard functies (PC INT 16) #3B Shell naar DOS #3C Zoek eerste passende file #3D Zoek volgende passende file #3E Selecteer printer #3F Open random access file #40 Sluit random access file #41 Schrijf byte naar random access file #42 Lees byte van random access file #43 Verplaats random access file pointer #44 Opvragen extensie van random access file #45 Lees teken onder muiscursor #46 Opvragen versienummer terminal programma #47 Teken naar printer sturen #48 CGA grafisch teken defini‰ren #49 Horizontaal vullen #4A Vertikaal vullen #4B Aanroepen INT 61h #4C Defini‰er een grafisch venster #4D Grafisch venster opheffen #4E Grafische oorsprong verschuiven #4F Selecteer schermpagina voor monitor #50 Selecteer schermpagina voor bewerkingen #51 Zet cursor lijnen #52 Gereserveerd #53 Gereserveerd #54 Gereserveerd #55 Selecteer user font voor EGA/VGA tekstmode #56 Selecteer EGA 8*14 ROM font #57 Selecteer EGA 8*8 ROM font #58 Schrijf grafisch venster naar disk #59 Lees grafisch venster van disk #5A Grafische functies [circle, block, triangle, line] Subfunctie #00: teken een cirkel subfunctie #01: teken een cirkel en vul deze subfunctie #02: teken een rechthoek subfunctie #03: teken een rechthoek en vul deze subfunctie #04: teken een driehoek subfunctie #05: teken een driehoek en vul deze subfunctie #06: zet lijn patroon subfunctie #07: teken een rechte lijn subfunctie #08: huidige kleur/attribuut opvragen subfunctie #09: video mode support opvragen #5B Directe toegang tot PC-video geheugen en opvragen reset type subfunctie #00: Lees direct PC videogeheugen subfunctie #01: Schrijf direct PC videogeheugen subfunctie #02: Verplaats datablok in PC videogeheugen subfunctie #03: Lees direct PC geheugen subfunctie #04: Schrijf direct PC geheugen subfunctie #5B: Opvragen reset type subfunctie #5C: Instellen reset type subfunctie #5D: Software reset genereren #5C Tekstpagina's kopi‰ren, saven en laden #5D Ascii keyboard scan #5E Diverse wachtfuncties subfunctie #00: Wacht gedurende ingestelde tijd subfunctie #01: Stel wachttijd in subfunctie #02: Vlag zetten na wachttijd subfunctie #03: Timer vlag uitlezen subfunctie #04: 1/60 seconde wachten subfunctie #05: 1/50 seconde wachten #5F Paint functies Subfunctie 0: vlak inkleuren in voorgrondkleur subfunctie n: vlak inkleuren volgens patroon n subfunctie #FD: patroonfile laden van disk subfunctie #FE: patroonfile schrijven naar disk subfunctie #FF: patroon defini‰ren #60 Zet PC in CLEAR 0 emulatie mode #61 Record lezen/schrijven #62 Floating Point functies subfunctie #00: fp-formaat instellen en processor opvragen subfunctie #01: optellen subfunctie #02: aftrekken subfunctie #03: vermenigvuldigen subfunctie #04: delen subfunctie #05: absolute waarde bepalen subfunctie #06: afronden naar integer waarde subfunctie #07: vierkantswortel subfunctie #08: tangens (387+ vereist) subfunctie #09: sinus (387+ vereist) subfunctie #0A: cosinus (387+ vereist) subfunctie #0B: omrekenen naar graden subfunctie #0C: omrekenen naar radialen subfunctie #0D: machtverheffen #63 AIC Communicatie subfunctie #00: initialiseer AIC poort subfunctie #01: stuur byte naar andere computer subfunctie #02: lees byte van andere computer #64 Extended Memory Support subfunctie #00: versie opvragen subfunctie #01: pagina voorzetten subfunctie #02: pagina voorzetten subfunctie #03: pagina voorzetten #65 Sprite support commando's subfunctie #00: Definieer sprite base en initialisatie subfunctie #01: Definieer sprite subfunctie #02: Plaats sprite op het scherm subfunctie #03: Verwijder sprite van het scherm subfunctie #04: Verplaats sprite op het scherm subfunctie #05: Plaats sprite op scherm, zonder administratie subfunctie #06: Opvragen sprite coordinaten subfunctie #07: Test overlap van twee sprites subfunctie #08: Test overlap van een sprite met muis Een commando wordt naar de PC gestuurd door via de vector #FFC8 eerst een 0- byte te sturen, direct gevolgd door het commandonummer en eventuele parameters. Let erop dat steeds het juiste aantal bytes geschreven en gelezen moeten worden. Meer informatie over een PC commando is te verkrijgen met het HELP commando met als sleutelwoord PCCOM#xx waarbij xx het gewenste commando nummer is of PCCOM#xxss voor commando's met een subfunctie waarbij xx weer het commando is en ss het subfunctienummer. ~BIN xxxxxxxx waarbij x= 0 of 1 Achter bin mogen maximaal 8 binaire bits gegeven worden. Op het scherm verschijnt dan de hexadecimale waarde ervan. ~BIT x Bit geeft de binaire waarde van het low word van de expressie; dit mag een variabele, constante of functie zijn. ~DAS #xxxx of DAS #xxxx,#yyyy Een disassembler met als bijzonderheid dat teksten, die in een machinetaal- programma worden geschreven via #F7D1, als leesbare tekst worden getoond. Bij invoer van alleen het startadres gaat DAS door tot aan #FFFF. Bij invoer van het eindadres treedt tevens een speciale printeroptie in werking; als de printer on-line is wordt gevraagd of de uitvoer ook op papier afgedrukt moet worden. Antwoord met J of N. Ontsnappen kan altijd met escape. ~FVAR fp vardump Drukt alle floating-point variabelen af op het scherm. ~FZERO fp var wissen Geeft alle floating-point variabelen de waarde 0.0 ~JBOX helpfunctie Geeft een overzicht van alle JBOX commando's. ~HXD #xxxx of HXD #xxxx,#yyyy Een 80-koloms hexdump routine waarbij per regel 16 adressen hexadecimaal en tevens in ASCII weergegeven worden. Bij invoer van alleen het startadres gaat HXD door tot aan #FFFF. Bij invoer van het eindadres treedt tevens een speciale printeroptie in werking; als de printer on-line is wordt gevraagd of de uitvoer ook op papier afgedrukt moet worden. Antwoord met J of N. Ontsnappen kan altijd met escape. ~HIP #xxxx HIP is de afkorting van Hexadecimal InPut. Per adres wordt de geheugeninhoud getoond en verschijnt een vraagteken. Hierachter kan ingevoerd worden: - return , hip gaat dan verder naar het volgende adres - een hexadecimaal getal , hip plaatst het getal in het geheugen - letter T + een karakter , hip plaatst het karakter in het geheugen Het statement kan beeindigd worden met ESCAPE. ~HVAR vardump Toont de inhoud van de variabelen A t/m Z hexadecimaal op het scherm. ~INFO programma status geeft een overzicht van het in de huidige tekstpagina aanwezige basic- programma. PAGE, TOP, DIMTOP, SIZE en FREE memory worden op het scherm gezet. ~LAB label overzicht geeft een overzicht van de gebruikte labels in het aanwezige programma. Eerst worden de assembler labels getoond, daarna de basiclabels met het regelnummer waar ze voorkomen. Tenslotte verschijnt een regel waarin aangegeven wordt welke labels nog vrij zijn en welke al gebruikt zijn. ~LINE x waarbij x een regelnummer is. Als de regel gevonden is verschijnt het adres op het beeldscherm. ~LIB programmageheugen overzicht oftewel 'library', toont de eerste regel van alle in het geheugen aanwezige basicprogramma's, voorafgegaan door hun paginanummer. Een = teken achter het paginanummer geeft aan waar de tekstpointer staat. Vervolgens verschijnt PAG # op het scherm. Een return laat de tekstpagina ongewijzigd, bij invoer van een hexadecimaal getal zet de tekstpagina naar de opgegeven waarden. ~MFIND #xxxx,#yyyy,??? MultiFIND zoekt in het geheugengebied xxxx t/m yyyy naar ??? en toont de adressen waar het zoekargument gevonden is op het scherm. Voor ??? mag ingevuld worden: een hexadecimaal getal bijv. #40 een assembler mnemonic bijv. LDA #80,X een string bijv. "ATOM" Als het zoeken te lang gaat duren kan het gestopt worden met ESCAPE. ~PACK "stofzuiger" (jbox t/m versie 2.1) is een supersnelle opruimer van overbodige spaties in een basicprogramma. Let erop dat dit ook in teksten achter REM gebeurt. ~PLIST x,y (jbox t/m versie 2.1) geeft u, met printeroptie, een listing van een programma. Daarbij wordt voor elk regelnummer x spaties ingesprongen en achter elk regelnummer worden y spaties toegevoegd, behalve bij [ , ] , assembler labels en basiclabels. ~RAM #xxxx,#yyyy (jbox t/m versie 2.1) Een snelle ramtest; test het geheugen tussen #xxxx en #yyyy waarbij de aanwezige data niet verloren gaan. Stoppen kan met ESCAPE. ~TRACE #xxxx of TRACE #xxxx,#yyyy (jbox t/m versie 2.1) Een machinetaal programma wordt stap voor stap doorlopen. Na iedere instruktie wordt een disassembler gegeven met de actuele register inhouden. Gewacht wordt op een druk op de spatiebalk. Als yyyy gegeven is wordt pas vanaf dat adres begonnen met het afdrukken op het scherm. Alle instrukties tussen xxxx en yyyy worden dan normaal uitgevoerd. De registers A, X en Y kunnen bij het begin gezet worden door de variabelen A, X en Y. ~VER #xxxx,#yyyy,#zzzz vergelijkt de geheugeninhoud van #xxxx t/m #yyyy met #zzzz en verder. Niet met elkaar overeenkomende adressen worden op het scherm getoond. Ontsnappen met escape. ~#xx page zetten werkt als ?18=xx;END Top wordt goedgezet en getoond. ~GAGS - Geeft het versienummer van het Gagsrom. ~CLS - Wist het scherm; selecteert altijd 80 kolommen tekstmode. ~ATKEY (A,B,C,....)(a,b,c,....) M.b.v. ATKEY worden toetsen toegekend aan regelnummers of labels. Bij het indrukken van de eerste toets zal naar het eerste regelnummer of label gesprongen worden. ~JOYSTK A,B,C De joystick wordt via de joystickvector #FFBF uitgelezen en de opgegeven variabelen worden aangepast aan de hand van de status van de joystick: A - variabele A t/m Z wordt met 1 verhoogd als stick naar rechts of met 1 verlaagd als stick naar links B - variabele A t/m Z wordt met 1 verhoogd als stick omhoog of met 1 verlaagd als stick omlaag C - variabele A t/m Z is 0 als vuurknop niet gedrukt is als vuurknop gedrukt is <> 0 ~INV - Inverteert het Atom beeldscherm. ~BORDER x,y Tekent een lijstje op het beeldscherm x - offset aan linker en rechterzijde van het scherm y - offset aan boven en onderzijde van het scherm ~PAINT x,y,p M.b.v. PAINT kunnen ingesloten vlakken op het beeldscherm gevuld worden met een zelf te definieren patroon. x - x coordinaat startpositie y - y coordinaar startpositie p - patroonnummer (0 ... 31) Als het patroonnummer wordt weggelaten wordt het vlak geheel wit gekleurd. ~CUBE p,m,x,y,b,h Tekent een (gedeelte van) een rechthoek. p - plot mode 0=reset, 1=set, 2=inverteer pixels m - feature mode 0= teken complete rechthoek 1= teken rechthoek TOT eerste gezette pixel 2= teken rechthoek VANAF eerste gezette pixel 3= teken rechthoek TOT eerste gezette pixel en begin weer bij het volgende gezette pixel 4= begin bij het eerste gezette pixel en stop bij het volgende gezette pixel x - x coordinaat linker benedenhoek van rechthoek y - y coordinaat linker benedenhoek b - breedte van rechthoek h - hoogte van rechthoek ~CIRCLE p,x,y,r Tekent een cirkel in elke grafische mode (ook extended video) p - plot mode 0=reset, 1=set, 2=invert pixels x - x coordinaat middelpunt y - y coordinaat middelpunt r - straal in pixels ~PIXEL x,y,z Controleer of pixel in Atom grafische mode gezet is. x - x coordinaat van te controleren pixel y - y coordinaat van te controleren pixel z - variabele A t/m Z, wordt 0 als pixel zwart is, <>0 als pixel wit is ~WINDOW m,x,y,b,h Definieert een denkbeeldig raam in Atom grafische mode waarin wel of juist niet getekent mag worden. m - mode 0 = teken alleen buiten het raam 1 = teken alleen binnen het raam x - x coordinaat linker benedenhoek van venster y - y coordinaat linker benedenhoek van venster b - breedte van rechthoek venster h - hoogte van rechthoek venster ~WOFF - Heft het gedefinieerde raam op. Er mag weer op het hele scherm getekend worden. ~FILL a,b,c Vult het geheugen van a tot b met de waarde c. ~SCROLL e Hiermee is het beeld in elke gewenste richting te scrollen afhankelijk van de extensie e: U - (up) naar boven, 8 pixels D - (down) naar beneden, 8 pixels L - (left) naar links, 8 pixels R - (right) naar rechts, 8 pixels ~HLINE P ,x1 , y1 , x2 , y2 , l , f , a , b Tekent lijn vanuit start positie naar een positie met een bepaalde x-coordinaat, welke zou liggen op de lijn welke getrokken wordt tussen de startpositie en de eindpositie. P - plotting mode: 0=reset, 1=set, 2=invert pixel x1,y1 - coordinaten start positie x2,y2 - coordinaten eind positie l - x coordinaat eind pixel f - pixel feature: =0 tekent tot aan eind pixel =1 tekent tot aan eerst gesette pixel A,B - variable A t/m Z. Wordt gevuld met coordinaten van laatst geplotte pixel. ~VLINE P ,x1 , y1 , x2 , y2 , l , f , a , b Tekent lijn vanuit start positie naar een positie met een bepaalde y-coordinaat, welke zou liggen op de lijn welke getrokken wordt tussen de startpositie en de eindpositie. P - plotting mode: 0=reset, 1=set, 2=invert pixel x1,y1 - coordinaten start positie x2,y2 - coordinaten eind positie l - y coordinaat eind pixel f - pixel feature: =0 tekent tot aan eind pixel =1 tekent tot aan eerst gesette pixel A,B - variable A t/m Z. Wordt gevuld met coordinaten van laatst geplotte pixel. ~INK a Kleurenset van 16 kleuren. Verticale resolutie wordt gehalveerd. a - kleur: 0=transparant groen 8=cyaan 1=licht groen 9=grijs 2=paars 10=blauw 3=donker bruin 11=donker blauw 4=groen(1) 12=groen(2) 5=geel 13=oranje(2) 6=rose 14=magenta 7=oranje(1) 15=rood Mogelijk verschijnen deze kleuren iets anders op het scherm van de PC. ~PAPER a Creeren van een achtergrond kleur a - kleur: 0=zwart 2=rood (magenta) 1=groen (cyaan) 3=geel (wit) De kleuren tussen de haakjes gelden in palet 1. ~MODE a Graphische mode selecteren zonder het beeld te wissen. *** dit statement werkt niet op de Atom in PC *** ~BLOCK m , x , y , b , h Tekent een volledig gevulde rechthoek. m - plotting mode: 0=reset, 2=invert pixel x - x coordinaat linker beneden hoek block y - y coordinaat linker beneden hoek block b - breedte block h - hoogte block ~SOUND p , d Produceert geluid volgens: p - pitch (toonhoogte) 1<=p<=255 d - duur van de toon 1<=d<=255 ~PALET p Een CGA kaart kent twee paletten. Het betreffende palet kan hiermee gekozen worden. Andere mogelijkheden van het PALET statement zijn: þ wijzigen van borderkleur in tekstmode þ wijzigen van achtergrondkleur in 4 kleuren grafische mode. þ wijzigen van voorgrondkleur in 2 kleuren grafische mode. In de laatste drie gevallen ligt p dan tussen #80 en #FF. Dit statement is specifiek voor een CGA kaart; op een EGA/VGA kaart kan de werking iets anders uitvallen. ~CREATE sprites en paint-patronen definities - patroon Create/p:n a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 p - patroon nummer 0 t/m 31 a - 8 bytes welke in totaal het patroon vormen: a1=bovenste rij, a8= onderste rij - horizontale sprite CREATE ,a1a2,a3,.........,a15,a16 CREATE /H ,a1,a2,a3......,a15,a16 - naam van de sprite, maximaal 8 letters /H - switch voor horizontale sprites (optioneel) a1..a16- sprite defenitie volgens: startpositie ---> ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ³a8 ³ a16³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a7 ³ a15³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a6 ³ a14³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a5 ³ a13³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a4 ³ a12³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a3 ³ a11³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a2 ³ a10³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ ³a1 ³ a9 ³ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ - vertikale sprite CREATE /V ,a1,a2,a3......,a15,a16 - naam van de sprite, maximaal 8 letters /V - switch voor horizontale sprites (verplicht !) a1..a16- sprite defenitie volgens: startpositie ---> ÚÄÄÄÄÄÄÄ¿ ³ 16 ³ ÃÄÄÄÄÄÄÄ´ ³ 15 ³ ÃÄÄÄÄÄÄÄ´ . ³ . ³ . ÃÄÄÄÄÄÄÄ´ ³ a2 ³ ÃÄÄÄÄÄÄÄ´ ³ a1 ³ ÀÄÄÄÄÄÄÄÙ - auto assignment Als het CREATE statement voor sprites gevolgd wordt door /A:n krijgt het sprite een assignmentnummer waaronder het dan ook bekend is. Zie ook `ASSIGN. ~DEF naam,xxxxxxxxxxxxxxxxx DEF: xxxxxxxxxxxxxxxxx Definieren van alleen horizontale sprites. Voor pixels die gezet moeten worden is x een '1' voor zwarte pixels is x een '0'. De regel DEF: komt per sprite zeven keer voor. ~BASE q Bepaalt het geheugenblok waar sprites en paint patronen opge- borgen worden (in totaal 2 kb). Reset tevens het mapbyte voor `INT en `ATTRIG. q - high byte van begin van geheugenblok ~ASSIGN :naam,a Geeft aan een bepaalde sprite een numerieke waarde. De sprite is dan zowel onder de naam als onder dit nummer bekend. naam - naam van de betreffende sprite a - assignment nummer van de sprite ~DEASS :naam Disabled de herkenning van de sprite onder een assignmentnummer. Het heft de werking van `ASSIGN op. ~KILL :naam KILL a Verwijdert een sprite uit de administratie. naam - naam van de te verwijderen sprite a - eventueel assignmentnummer van de sprite ~SET :naam,x,y SET a,x,y Plaats een sprite op het scherm. naam - naam van de sprite a - eventueel assignmentnummer van de sprite x - x coordinaat van de sprite y - y coordinaat van de sprite ~UNSET :naam UNSET a Verwijdert een sprite van het scherm. naam - naam van de sprite a - eventueel assignmentnummer van de sprite ~IMAGE :naam,x,y IMAGE a,x,y Plaats een sprite op het scherm maar neemt het niet op in de administratie. Na het plaatsen is de spritepositie niet meer bekend. naam - naam van de sprite a - eventueel assignmentnummer van de sprite x - x coordinaat van de sprite y - y coordinaat van de sprite ~TURN :naam TURN a Draait een sprite om zijn vertikale as, zowel op het scherm als in de sprite administratie. ~CARRY :naam,x,y CARRY a,x,y Verplaats een sprite dat op het beeldscherm staat naar de opgegeven positie. naam - naam van de sprite a - eventueel assignmentnummer van de sprite x - x coordinaat van de sprite y - y coordinaat van de sprite ~SHOVE :naam,dx,dy SHOVE a,dx,dy Verschuift een sprite dat op het beeldscherm staat volgens de opgegeven verplaatsing. De nieuwe positie wordt bijgewerkt in de administratie. naam - naam van de sprite a - eventueel assignmentnummer van de sprite dx - verplaatsing in horizontale richting dy - verplaatsing in vertikale richting ~POS :naam, A , B POS a,A,B Plaatst de coordinaten van de opgegeven sprite in de opgegeven variabelen. ~ATHIT : , ATHIT : , a2 ATHIT A1 , : ATHIT A1 , a2 Controleert of twee sprites elkaar overlappen. - naam sprite 1 - naam sprite 2 a1 - assignment nummer sprite 1 a2 - assignment nummer sprite 2 Indien de twee sprites elkaar raken wordt de rest van de regel waarop AHIT staat uitgevoerd. Anders zal de regel opgevat worden als commentaar. ~INT c , t ( VIA NODIG ) Biedt de mogelijkheid om 3 zogenaamde channels te gebruiken, welke onder interrupts van timer 1 na verschillende, op te geven tijden aangeroepen zullen worden (lees: routines in het programma). c - channel nummer 0,1 of 2 t - tijd 1<=t<=#ffff Tijdens de declaratie van INT wordt de rest van de regel opgevat als commentaar. Is de verlangde tijd, na het aanzetten van de timer, verstreken, dan zal het statement waarmee de interpretor op dat moment bezig is afgemaakt worden en vervolgens wordt gesprongen naar het gedeelte op de declaratie regel na de parameters. Op dat moment wordt ook de timer uitgezet die men zelf later weer aan moet zetten. INT : P ( VIA NODIG ) Start of stopt de timer. p - =0 stopt de timer =1 start de timer Let op de dubbele punt!! De timer loopt met 50hz, dat wil zeggen, de tijden die men declareert moeten met 0.02 vermenigvuldigd worden. Voor 1 seconde kiest men t=50. ~ATTRG (VIA NODIG) (at trigger) Evenals INT een declaratie. Indien de timer loopt en men drukt op de spatiebalk of men drukt de fire-button van de joystick in, dan zal de interpretot het statement afmaken waarmee het bezig was en vervolgens springen naar het eerst volgende statement op de ATTRG regel achter de declaratie. ~CHAIN laadt en start Atom basicprogramma Syntax: CHAIN "filespec" Het CHAIN statement laadt een basicprogramma in de actuele tekstpagina en start het programma. Het executieadres maakt in dit geval niets uit omdat het programma altijd gestart wordt vanaf #F144. De filespecificatie mag een drive en directory bevatten maar geen wildcards * en ?. ~FILECNV fileheader toevoegen of weghalen Syntax: FILECNV filespec1 filespec2 H+ [start exec] FILECNV filespec1 filespec2 H- De files voor de Atom bevatten altijd een header van 16 bytes aan het begin van de file. Met het statement FILECNV kan deze header toegevoegd of weggehaald worden, bijvoorbeeld als er files van een "echte" Atom en de Atom in PC worden uitgewis- seld. Filespec1 bevat het pad en filenaam van de oorspronkelijke file; deze file wordt niet veranderd. Filespec2 is het pad en de filenaam van de nieuwe file waar de header is toegevoegd of weggehaald. H+ geeft aan dat de header wordt toegevoegd; H- betekent header weghalen. Het start en executie adres mogen weggelaten worden. In dat geval worden de waarden #2900 en #F144 gebruikt. Geef deze adressen met # teken en zonder komma tussen de parameters. Let erop dat de originele file en de nieuwe file niet hetzelf- de zijn; dan gaan alle data verloren! ~GWINDOW definie‰ren grafisch venster Syntax: GWINDOW xlo,ylo,xrb,yrb Dit statement werkt alleen in de extended videomodi. Er wordt een grafisch venster gecre‰erd waarin getekend mag worden. De vier parameters geven de X en Y co”rdinaten aan van de linker benedenhoek en de rechter bovenhoek. Deze co”rdinaten gelden altijd ten opzichte van de linker bovenhoek van het beeld- scherm. ~GWOFF grafisch venster opheffen Syntax: GWOFF Het grafische venster wordt gereset zodat weer over het gehele scherm getekend mag worden. ~HELP on-line helpfunctie Syntax: HELP [trefwoord] Hoe was de syntax ook alweer van het `HLINE commando? Hoeveel parameters krijgt het `UDS statements mee? Met welk PC-commando wordt de printerstatus opgevraagd? Inmiddels zijn er voor de Atom zovele toolboxen en nog meer extra statements toegevoegd dat het bijna onmogelijk is om nog een eenvoudig overzicht te houden. Bovenstaande vragen kunnen nu snel beantwoord worden met het HELP statement. Op het scherm verschijnt razendsnel voldoende maar toch beknopte uitleg. HELP gebruikt twee datafiles, ATOMHELP.IDX en ATOMHELP.TXT; het pad en de naam van deze datafiles zijn opgeslagen als ascii string vanaf adres #AFC0 resp. #AFE0. Bij gebruik van HELP wordt eerst het trefwoord opgezocht in de indexfile. Als het daar gevonden is, wordt een pointer gelezen naar het begin van de helptekst in de file ATOMHELP.TXT. Die tekst wordt vervolgens op het scherm afgebeeld. ~HFILL horizonale lijnen kleuren Syntax: HFILL x,y1 TO y2,g Met HFILL kunnen horizontale lijnen gekleurd worden. Het kleuren begint bij x,y1 en kleurt naar links en rechts totdat een pixel wordt aangetroffen die de grenskleur g heeft. Ver- volgens wordt de y-co”rdinaat verhoogd en wordt de volgende lijn ingekleurd. HFILL werkt alleen in extended videomodi en houdt rekening met een grafisch venster en een verschoven oorsprong. ~POWERDOWN snel geheugeninhoud op disk bewaren Syntax: POWERDOWN Dit statement is bedoeld om snel de geheugeninhoud van #300 tot #A000 op disk te bewaren als de computer uit wordt gezet. Na het opnieuw opstarten kan de geheugeninhoud hersteld worden met *LOAD MEMORY.PD ~ORIGIN verplaatsen grafische oorsprong Syntax: ORIGIN x,y De grafische oorsprong (het punt 0,0) wordt voor extended videomodi verschoven naar het punt x,y; dit punt is opgegeven ten opzichte van de linker bovenhoek van het beeldscherm. ~OSCLI aanroep *-commando Syntax: OSCLI string,$13 In PC-DOS is het niet toegestaan om variabelen te gebruiken bij de *-commando's. Met OSCLI is dat gemis te omzeilen. De op te geven string kan bestaan uit tekst tussen aanhalingstekens en (string)variabelen. Let erop dat dit statement altijd wordt afgesloten met een $13 ! ~PCC printer control code Syntax: PCC p1,p2,p3,..... Als de printer aangezet is met $2 stuurt PCC alle opgegeven parameters uitsluitend naar de geselecteerde printer. Ook de codes $2, $3 en de inhoud van #FE worden naar de printer gestuurd. De printer kan met PCC niet aan of uitgezet worden. ~SCREEN selecteren beeldpagina's Syntax: SCREEN s De meeste videokaarten kunnen overweg met meerdere schermpagi- na's. De Atom kan inmiddels ook overweg met meerdere pagina's in tekstmode. Met SCREEN kunnen pagina's opgeroepen worden. Als s tussen 0 en 7 ligt wordt dat de pagina die op de monitor verschijnt en waarin de bewerkingen plaatsvinden. Een s tussen #40 en #47 selecteert alleen de pagina waarin bewerkingen plaatsvinden en s tussen #80 en #87 selecteert alleen de pagina die op de monitor verschijnt. ~TXMOD omschakelen naar tekstmode Syntax: TXMOD [optie] TXMOD /8 Er wordt naar tekstmode geschakeld waarbij het EGA 8*8 karakterfont wordt geladen; automatisch wordt overgescha- keld naar 43 regels per scherm voor EGA kaarten of 50 regels per scherm voor VGA kaarten. Het tekstvenster wordt automatisch goed gezet mits de juiste video-optie is opgegeven bij het starten van het terminal programma. TXMOD /14 De tekstmode wordt ingeschakeld waarbij het EGA 8*14 karakterfont wordt geladen; automatisch wordt overgescha- keld naar 25 regels per scherm voor EGA kaarten of 28 regels per scherm voor VGA kaarten. Het tekstvenster wordt automatisch goed gezet mits de juiste video-optie is opgegeven bij het starten van het terminal programma. TXMOD /F pad+fontnaam De tekstmode wordt ingeschakeld, het opgegeven font wordt van disk geladen en wordt geaktiveerd. TXMOD /C Het in de buffer geladen font (laden m.b.v. het statement `FONT ) wordt gekopi‰erd naar fontram van de EGA of VGA kaart waarbij de op het scherm aanwezige tekst wordt aangepast aan het nieuwe font. De overige instellingen blijven ongewijzigd. ~UTIL overzicht statements PC Utility Box Syntax: UTIL Het scherm wordt gewist en er verschijnt een overzicht van alle statements uit deze toolbox. ~VCC video control code Syntax: VCC p1,p2,p3,.... VCC stuurt alle opgegeven parameters direct door naar de PC. De semafoor wordt gedurende de uitvoering van dit statement gezet zodat het oversturen niet onderbroken kan worden. Een $0 wordt als slechts ‚‚n 0 overgestuurd. Dit statement is goed te gebruiken om via control codes bepaalde commando's uit te voeren. ~VDU video control code Syntax: VDU p1,p2,p3,... VDU stuurt alle opgegeven parameters direct door naar de PC. De semafoor wordt gedurende de uitvoering van dit statement gezet zodat het oversturen niet onderbroken kan worden. Een $0 wordt als slechts ‚‚n 0 overgestuurd. Dit statement is goed te gebruiken om via control codes bepaalde commando's uit te voeren. ~VFILL vertikale lijnen kleuren Syntax: VFILL x1 TO x2,y,g Met VFILL kunnen vertikale lijnen gekleurd worden. Het kleuren begint bij x1,y en kleurt omlaag en omhoog totdat een pixel wordt aangetroffen die de grenskleur g heeft. Vervolgens wordt de x-co”rdinaat verhoogd en wordt de volgende lijn ingekleurd. VFILL werkt alleen in extended videomodi en houdt rekening met een grafisch venster en een verschoven oorsprong. ~GETWIN grafisch venster naar disk schrijven Syntax: GETWIN handle,xlo,ylo Met GETWIN kan een grafisch venster dat met SAVWIN naar disk geschreven is weer teruggehaald worden. De opgegeven co”rdinaten zijn de linker benedenhoek waar het venster teruggezet wordt. De file moet vooraf als random access file geopend zijn. Na het statement is de file niet gesloten; dat zal alsnog moeten gebeuren met het SHUT statement. ~SAVWIN schrijf grafisch venster naar disk Syntax: SAVWIN handle,xlo,ylo,xrb,yrb Het opgegeven grafische venster wordt naar een bestand geschreven. Dit bestand dient van te voren als random access file geopend te zijn. Na het schrijven wordt het bestand niet automatisch gesloten. ~XBLOCK teken een rechthoek in extended video mode Syntax: XBLOCK mode,xlo,ylo,xrb,yrb Er wordt binnen de opgegeven co”rdinaten een rechthoek getekend. 'mode' mag de waarde O hebben voor een 'open' rechthoek of de waarde F voor een ingekleurde rechthoek. ~XCIRCLE teken een cirkel in extended video mode Syntax: XCIRCLE mode,x,y,straal In extended video mode wordt een cirkel getekend. 'mode' mag de waarde O hebben voor een 'open' cirkel of de waarde F voor een ingekleurde cirkel. ~XLINE teken een rechte lijn in extended video mode Syntax: XLINE xb,yb,xe,ye Tussen de punten (xb,yb) en (xe,ye) wordt een rechte lijn getekend. ~XPAINT gesloten vlakken inkleuren Syntax: XPAINT C,x,y,g Hiermee wordt het vlak waarin het punt (x,y) zich bevindt ingekleurd in de geldende voorgrondkleur. De grenskleur van het vlak wordt aangegeven met de parameter 'g'. Syntax: XPAINT P,x,y,g,n Hiermee wordt het vlak waarin het punt (x,y) zich bevindt ingekleurd met het patroon 'n' (n is minimaal 1 en maximaal 64). De grenskleur van het vlak wordt aangegeven met de parameter 'g'. Syntax: XPAINT D,n,a Een patroon bestaat uit 16*16 (256) bytes. Deze bytes moeten opgeslagen zijn in het atomgeheugen vanaf adres 'a'. De eerste zestien bytes zijn de bovenste rij van het patroon; de tweede zestien bytes zijn de tweede rij van het patroon en zo verder. Met XPAINT D,n,a wordt de patroondefinitie van patroon 'n' doorgegeven aan de PC. In de Atom kan dit geheugen daarna weer gebruikt worden voor andere doeleinden. Er kunnen maximaal 64 patronen gedefini‰erd worden. De waarde van n ligt tussen 1 en 64. Syntax: XPAINT S,filenaam De verzameling patronen die opgeslagen zijn in het geheugen van de PC wordt hiermee op disk opgeslagen. De filenaam is een ASCIIZ string en mag een drive en pad aanduiding bevatten maar geen wildcards * en ?. Syntax: XPAINT L,filenaam Er wordt van schijf een verzameling patronen geladen en in het geheugen van de PC opgeslagen. De filenaam is een ASCIIZ sting en mag een drive en pad aanduiding bevatten maar geen wildcards * en ?. ~XPALET wijzigen EGA/VGA kleurenpalet Syntax: XPALET reg,kleur Bij EGA/VGA kaarten kunnen de 16 kleuren in tekstmode gekozen worden uit een palet van 64 kleuren. Het 'reg' komt overeen met het logische kleurnummer. De 'kleur' is de werkelijke kleur die op het scherm getoond wordt. ~XSTYLE lijn type defini‰ren Syntax: XSTYLE s Voor de statements XLINE, XBLOCK, XCIRCLE, XPAINT en XTRIANGLE kan het lijntype opgegeven worden. Het meest logische effect is te zien bij XLINE. Als een bit in 's' 1 is wordt er een punt geplot; als een bit '0' is wordt er niets geplot. Met XSTYLE is het dus mogelijk op stippellijnen te tekenen. ~XTRIANGLE teken een driehoek in extended video mode Syntax: XTRIANGLE mode,x1,y1,x2,y2,x3,y3 Tussen de drie opgegeven punten wordt een driehoek getekend. Als 'mode' O is wordt deze niet ingekleurd, als 'mode' F is wordt deze wel gekleurd in de geldende voorgrondkleur. ~PDMENU pull down menu Syntax: PDMENU x,y,breedte,items,S/D,attr,$tekst,var[,begin] Dit statement geeft een kompleet pull down menu in zowel tekst als grafische mode. Bediening kan met de cursortoetsen of met de muis. De menubalk wordt verplaatst met de cursortoetsen voor omhoog/omlaag of door de muis in vertikale richting te bewegen. Een keuze wordt gemaakt door een druk op de ENTER toets of de linker muistoets. Het menu kan ook verlaten worden door het drukken van ESCAPE of de rechter muistoets. In dat geval is de teruggegeven waarde 0. Het menu is omgeven door een kader. De co”rdinaten x en y geven de linker bovenhoek van het menu aan. De 'breedte' is het aantal karaters dat de menu-items breed zijn. De parameter 'S/D' geeft aan of het kader met enkele (S) of dubbele (D) lijnen getekend moet worden. 'Attr' is de kleur of attribuut van het menu. $tekst wijst naar een string in het geheugen die de menu-items bevat. Het uiteindelijk gekozen item komt in de 'var' (A..Z) terecht. De laatste parameter is optioneel. Zonder deze parameter licht het eerste menu-item op bij het begin van het statement PDMENU. Als deze parameter wordt opgegeven licht het overeenkomstige item op. Samenvattend: x,y linker bovenhoek van menu breedte aantal tekens per item items aantal menu items S/D Single of Double kader attr attribuut of kleur van het menu $tekst pointer naar menu items var variabele (A..Z) waar keuze in komt [begin] hi-lighted menu item ~SCOPY video scherm kopi‰ren Syntax: SCOPY C,bron,bestemming Met het statement SCOPY kan de inhoud van de ene beeldscherm-pagina naar de andere gekopi‰erd worden of van/naar disk. Syntax: SCOPY L,pagina,handle of SCOPY S,pagina,handle Met de opties L en S wordt een schermpagina uit een bestand gelezen danwel naar een bestand geschreven. Het bestand dient reeds geopend te zijn als random access file; het bestand wordt na afloop niet gesloten en er volgt geen terugmelding of de actie goed afgehandeld is. ~VIDEO uitvoeren PC video interrupt 10h Syntax: VIDEO Voordat dit statement uitgevoerd wordt dienen de variabelen A, B, C en D voorzien te worden van de waarden die de 80x86 registers AX, BX, CX en DX krijgen. De return-waarden van deze registers worden opgeslagen in de zeropage vanaf adres #90. Let er bij gebruik in een schakelkaart systeem op dat deze adressen weggeschakeld kunnen worden. ~RGET lees record uit random access file Syntax: RGET handle, bufferadres, recordlengte Uit de geopende file wordt geprobeerd het aantal gevraagde bytes (de recordlengte) te lezen. De data wordt opgeslagen vanaf het bufferadres. Het aantal gelezen bytes is direct na uitvoering van dit statement beschikbaar op zeropage adres #90/#91. De maximale recordlengte is 16 kb. ~RPUT schrijf record naar random access file Syntax: RPUT handle, bufferadres, recordlengte Het aantal opgegeven bytes wordt vanuit de buffer naar de file met de opgegeven handle gestuurd. Het aantal geschreven bytes is direct na uitvoering van dit statement beschikbaar op zeropage adres #90/#91. De maximale recordlengte is 16 kb. ~CLEAR grafische mode selecteren Syntax: CLEAR mode Bij mode 0 ... 4 wordt de emulatie van de standaard Atom grafische modi in gang gezet. Bij mode > 4 worden de extended video modi geactiveerd. Programma's die afhankelijk zijn van een bepaalde mode kunnen met behulp van pc-commando #5A subfunctie 9 opvragen of die mode door de videokaart ondersteund wordt. Als deze functie de waarde #FF teruglevert wordt de mode niet ondersteund. Mocht een niet-ondersteunde mode opgeroepen worden volgt een foutmelding op het beeldscherm. Deze melding wordt niet afgegeven aan de Atom; het programma zal zo goed als mogelijk doorlopen. Vanaf versie 3.10 zijn de volgende grafische modi voor de Atom beschikbaar: CLEAR 0 Atom clear 0 64 * 48 pixels 2 kleuren CLEAR 1 Atom clear 1 64 * 64 pixels 2 kleuren CLEAR 2 Atom clear 2 128 * 64 pixels 2 kleuren CLEAR 3 Atom clear 3 128 * 192 pixels 2 kleuren CLEAR 4 Atom clear 4 256 * 192 pixels 2 kleuren CLEAR 5 CGA mode 0 40 * 25 karakters 16 kleuren CLEAR 6 CGA mode 1 40 * 25 karakters 16 kleuren CLEAR 7 CGA mode 2 80 * 25 karakters 16 kleuren CLEAR 8 CGA mode 3 80 * 25 karakters 16 kleuren CLEAR 9 CGA mode 4 320 * 200 pixels 4 kleuren CLEAR 10 CGA mode 5 320 * 200 pixels 4 kleuren CLEAR 11 CGA mode 6 640 * 200 pixels 2 kleuren CLEAR 12 Herc mode 7 80 * 25 karakters monochroom tekst CLEAR 13 Herc mode 8 1) 768 * 348 pixels 2 kleuren CLEAR 18 EGA mode 0D 320 * 200 pixels 16 kleuren CLEAR 19 EGA mode 0E 640 * 200 pixels 2 kleuren CLEAR 20 EGA mode 0F 640 * 350 pixels 4 kleuren CLEAR 21 EGA mode 10 640 * 350 pixels 16 kleuren CLEAR 22 VGA mode 11 640 * 480 pixels 2 kleuren CLEAR 23 VGA mode 12 640 * 480 pixels 16 kleuren CLEAR 24 VGA mode 13 320 * 200 pixels 256 kleuren CLEAR 25 VESA mode 100 640 * 400 pixels 256 kleuren CLEAR 26 VESA mode 101 640 * 480 pixels 256 kleuren CLEAR 27 VESA mode 102 800 * 600 pixels 16 kleuren CLEAR 28 VESA mode 103 800 * 600 pixels 256 kleuren CLEAR 29 VESA mode 104 1024 * 768 pixels 16 kleuren CLEAR 30 VESA mode 105 1024 * 768 pixels 256 kleuren CLEAR 31 VESA mode 106 1280 * 1024 pixels 16 kleuren 1) Voor deze mode dient het hulpprogramma MSHERC.COM geladen te zijn. ~PCCOM#5A00 COMMANDO #5A subfunctie #0: teken een cirkel Invoer: x-co”rdinaat middelpunt (1 word) y-co”rdinaat middelpunt (1 word) straal (1 word) Uitvoer: geen In extended video mode wordt een cirkel getekend met het middelpunt op de opgegeven co”rdinaten en met de opgegeven straal. ~PCCOM#5A01 COMMANDO #5A subfunctie #1: teken een cirkel en vul deze Invoer: x-co”rdinaat middelpunt (1 word) y-co”rdinaat middelpunt (1 word) straal (1 word) Uitvoer: geen In extended video mode wordt een cirkel getekend met het middelpunt op de opgegeven co”rdinaten en met de opgegeven straal. Deze cirkel wordt opgevuld in de geldende voorgrondkleur. ~PCCOM#5A02 COMMANDO #5A subfunctie #2: teken een rechthoek Invoer: x-co”rdinaat linker benedenhoek (1 word) y-co”rdinaat rechter benedenhoek (1 word) x-co”rdinaat linker bovenhoek (1 word) y-co”rdinaat rechter bovenhoek (1 word) Uitvoer: geen In extended video mode wordt een rechthoek getekend tussen de opgegeven hoekpunten. ~PCCOM#5A03 COMMANDO #5A subfunctie #3: teken een rechthoek en vul deze Invoer: x-co”rdinaat linker benedenhoek (1 word) y-co”rdinaat rechter benedenhoek (1 word) x-co”rdinaat linker bovenhoek (1 word) y-co”rdinaat rechter bovenhoek (1 word) Uitvoer: geen In extended video mode wordt een rechthoek getekend tussen de opgegeven hoekpunten. Deze rechthoek wordt opgevuld in de geldende voorgrondkleur. ~PCCOM#5A04 COMMANDO #5A subfunctie #4: teken een driehoek Invoer: x en y-co”rdinaten eerste hoekpunt (2 words) x en y-co”rdinaten tweede hoekpunt (2 words) x en y-co”rdinaten derde hoekpunt (2 words) In extended video mode wordt een driehoek getekend tussen de opgegeven hoekpunten. ~PCCOM#5A05 COMMANDO #5A subfunctie #5: teken een driehoek en vul deze Invoer: x en y-co”rdinaten eerste hoekpunt (2 words) x en y-co”rdinaten tweede hoekpunt (2 words) x en y-co”rdinaten derde hoekpunt (2 words) In extended video mode wordt een driehoek getekend tussen de opgegeven hoekpunten. Deze driehoek wordt opgevuld in de geldende voorgrondkleur. ~PCCOM#5A06 COMMANDO #5A subfunctie #6: zet lijn patroon Invoer: bitpatroon van de lijn (1 word) Uitvoer: geen Om niet-aaneengesloten lijnen te tekenen kan met deze functie een 16-bits patroon opgegeven worden. ~PCCOM#5A07 COMMANDO #5A subfunctie #7: teken een rechte lijn Invoer: x-co”rdinaat beginpunt (1 word) y-co”rdinaat beginpunt (1 word) x-co”rdinaat eindpunt (1 word) y-co”rdinaat eindpunt (1 word) Uitvoer: geen In extended video mode wordt een lijn getekend tussen het opgegeven begin en eindpunt. Hierbij geldt dat een '1' in het lijn patroon (zie ook `PCCOM#5A06 ) geplot wordt de geldende voorgrondkleur. Een '0' in het lijn patroon laat het pixel ongewijzigd. ~PCCOM#5A08 COMMANDO #5A subfunctie #8: huidige kleur/attribuut opvragen Invoer: geen uitvoer: attribuut (1 byte) De waarde van het huidige attribuut of van de huidige voorgrondkleur kan hiermee opgevraagd worden. ~PCCOM#5A09 COMMANDO #5A subfunctie #9: video mode support opvragen Invoer: video mode (1 byte) Uitvoer: support status (1 byte) De PC controleert of de gevraagde video mode ondersteund wordt door de huidige videokaart. Bij status #FF wordt de mode niet ondersteund. Er wordt niet van mode veranderd. ~PCCOM#5E00 COMMANDO #5E subfunctie #0: Wacht gedurende ingestelde tijd Invoer: geen Uitvoer: dummy (1 byte) De PC wacht gedurende een van te voren opgegeven tijd. Na het verstijken van deze tijd wordt een dummy byte naar de Atom gestuurd om beide systemen te synchroniseren. De wachttijd kan met subfunctie #1 van commando #5E ingesteld worden. ~PCCOM#5E01 COMMANDO #5E subfunctie #1: Stel wachttijd in Invoer: tijd in microseconden (4 bytes) Uitvoer: geen Met deze functie wordt de wachttijd ingesteld voor de functies #0 en #2 van commando #5E. Het meest lage byte wordt als eerste overgestuurd. ~PCCOM#5E02 COMMANDO #5E subfunctie #2: Vlag zetten na wachttijd Invoer: geen Uitvoer: geen In de PC wordt een vlag gewist die na de opgegeven wachttijd gezet wordt. De wachttijd wordt ingesteld met commando #5E subfunctie #1. De status van deze vlag kan opgevraagd worden met commando #5E subfunctie #3. ~PCCOM#5E03 COMMANDO #5E subfunctie #3: Timer vlag uitlezen Invoer: geen Uitvoer: status van de vlag (1 byte) Als de wachtperiode, die met commando #5E subfunctie #2 gestart werd, verstreken is heeft bit 7 de waarde '1'. ~PCCOM#5E04 COMMANDO #5E subfunctie #4: 1/60 seconde wachten Invoer: geen Uitvoer: dummy byte (1 byte) Deze functie laat de PC 1/60 seconde wachten waarna een dummy byte naar de Atom gestuurd wordt om de twee systemen te synchroniseren. ~PCCOM#5E05 COMMANDO #5E subfunctie #5: 1/50 seconde wachten Invoer: geen Uitvoer: dummy byte (1 byte) Deze functie laat de PC 1/50 seconde wachten waarna een dummy byte naar de Atom gestuurd wordt om de twee systemen te synchroniseren. ~PCCOM#5F00 COMMANDO #5F subfunctie 0: vlak inkleuren in voorgrondkleur Invoer: x-co”rdinaat (1 word) y-co”rdinaat (1 word) grenskleur (1 byte) Uitvoer: geen Een vlak, ingesloten door lijnen in de grenskleur, wordt gevuld in de geldende voorgrondkleur. De grenskleur mag hetzelfde zijn als de huidige voorgrondkleur. ~PCCOM#5FNN COMMANDO #5F subfunctie n: vlak inkleuren volgens patroon n waarbij geldt: 1 < n < 64 Invoer: x-co”rdinaat (1 word) y-co”rdinaat (1 word) grenskleur (1 byte) Uitvoer: geen Een vlak, ingesloten door lijnen in de grenskleur, wordt gevuld met het opgegeven patroon. De grenskleur mag hetzelfde zijn als de huidige voorgrondkleur. ~PCCOM#5FFD COMMANDO #5F subfunctie #FD: patroonfile laden van disk Invoer: pad+filenaam als ASCIIZ Uitvoer: error code (1 byte) Om een set met patronen te laden van disk dient dit commando gebruikt te worden. De filenaam mag vooraf gegaan worden door een drive en pad aanduiding. Wildcards zijn niet toegestaan. ~PCCOM#5FFE COMMANDO #5F subfunctie #FE: patroonfile schrijven naar disk Invoer: pad+filenaam als ASCIIZ Uitvoer: error code (1 byte) Een set met patronen wordt met dit commando op disk opgeslagen. De filenaam mag vooraf gegaan worden door een drive en pad aanduiding. Wildcards zijn niet toegestaan. ~PCCOM#5FFF COMMANDO #5F subfunctie #FF: patroon defini‰ren Invoer: patroonnummer (1 byte) patroon (256 bytes) Uitvoer: geen Een patroon heeft de afmetingen van 16x16 bytes. Ieder byte bevat de kleurwaarde van ‚‚n pixel. Op deze manier kunnen dus maximaal 256 kleuren in een patroon verwerkt worden. De eerste 16 bytes vormen de bovenste rij van de patroon, de daaropvolgende 16 bytes de tweede rij enz. ~PCCOM#5B00 COMMANDO #5B subfunctie #00: Lees direct PC videogeheugen Invoer: offset adres videogeheugen (1 word) Uitvoer: data uit videogeheugen (1 byte) Deze call maakt het mogelijk om het PC videogeheugen direct uit te lezen, dus niet via het BIOS. Deze werkwijze is over het algemeen wat sneller. Bovendien worden hiermee ook systemen met twee monitoren ondersteund. ~PCCOM#5B01 COMMANDO #5B subfuntie #01: Schrijf direct PC videogeheugen Invoer: offset adres videogeheugen (1 word) data (1 byte) Uitvoer: geen Deze call maakt het mogelijk om direct naar het PC videogeheugen te schrijven, dus niet via het BIOS. Deze werkwijze is over het algemeen wat sneller. Bovendien worden hiermee ook systemen met twee monitoren ondersteund. ~PCCOM#5B02 COMMANDO #5B subfunctie #02: Verplaats datablok in PC videogeheugen Invoer: offset adres bron (1 word) offset adres bestemming (1 word) bloklengte (1 word) Uitvoer: geen Het datablok beginnende vanaf 'offset adres bron' met lengte 'bloklengte' wordt gekopieerd naar 'offset adres bestemming'. Hierme kunnen snel stukken tekst over het scherm verplaatst worden, data kan tussen verschillende schermpagina's gekopieerd worden of in twee-monitor systemen van de ene monitor naar de andere. ~PCCOM#5B03 COMMANDO #5B subfunctie #03: Lees direct PC videogeheugen Invoer: offset adres geheugen (1 word) segment adres (1 word) Uitvoer: data uit geheugen (1 byte) Deze call maakt het mogelijk om het PC geheugen direct uit te lezen. ~PCCOM#5B04 COMMANDO #5B subfunctie #04: Schrijf direct PC videogeheugen Invoer: offset adres geheugen (1 word) segment adres (1 word) data (1 byte) Uitvoer: geen Deze call maakt het mogelijk om direct naar het PC geheugen te schrijven. Dit commando dient met de grootste zorgvuldigheid gebruikt te worden daar een verkeerde schrijfopdracht het hele systeem kan laten vastlopen met mogelijk enorm dataverlies! ~PCCOM#5B5B COMMANDO #5B subfunctie #5B: Opvragen reset type Invoer: geen Uitvoer: reset type (1 byte) De Atom kan opvragen wat de reden was van de laatste reset. Door het terminal programma worden de volgende typen gebruikt: Reset type #0 - terminal programma start Reset type #1 - reset door CTRL-ALT- De overige reset typen kunnen door software vanuit de Atom gezet worden. ~PCCOM#5B5C COMMANDO #5B subfunctie #5C: Instellen reset type Invoer: reset type (1 byte) Uitvoer: geen Voor een software reset kan met dit commando het reset type ingesteld worden. Ofschoon type #0 en #1 gereserveerd zijn door het terminal programma kunnen deze codes alsnog ingesteld worden om een dergelijke reset te simuleren. ~PCCOM#5B5D COMMANDO #5B subfunctie #5D: Software reset genereren Invoer: geen Uitvoer: geen Het terminal programma geeft de Atom kaart een reset signaal. Het reset type kan van te voren worden ingesteld met commando #5B, subfunctie #5C. ( `PCCOM#5B5C ) ~PCCOM#5C00 COMMANDO #5C subfunctie #00: kopi‰er schermpagina Invoer: bron schermpagina (1 byte) bestemming schermpagina (1 byte) Uitvoer: geen De inhoud van de 'bron'pagina wordt gekopi‰erd naar de bestemming. ~PCCOM#5C01 COMMANDO #5C subfunctie #01: bewaar schermpagina op disk Invoer: schermpagina nummer (1 byte) file handle (1 byte) Uitvoer: geen De inhoud van de opgegeven schermpagina wordt inclusief de attributen in een bestand opgeslagen. Dit bestand dient van te voren als random access file geopend te zijn. Er volgt geen terugmelding; het is dus niet na te gaan of het scherm goed opgeslagen is. Na afloop wordt het bestand niet afgesloten. ~PCCOM#5C02 COMMANDO #5C subfunctie #02: haal schermpagina van disk Invoer: schermpagina nummer (1 byte) file handle (1 byte) Uitvoer: geen De inhoud van het opgegeven "pagina-bestand" wordt in de opgegeven schermpagina geladen. Dit bestand dient van te voren als random access file geopend te zijn. Er volgt geen terugmelding; het is dus niet na te gaan of het scherm goed geladen is. Na afloop wordt het bestand niet afgesloten. ~PCCOM#6100 COMMANDO #61 subfunctie #0: record lezen Invoer: handle (1 byte) aantal te lezen bytes (1 word) Uitvoer: errorcode (1 byte) aantal gelezen bytes (1 word) xxx bytes Als invoer worden de file handle en het aantal te lezen bytes doorgegeven aan de PC. Deze probeert het aantal bytes te lezen. Indien er geen toegangsfout optreedt is de errorcode gelijk 0. In dat geval wordt vervolgens het aantal gelezen bytes teruggemeld. Deze bytes worden als laatste overgestuurd van PC naar Atom. Als er een fout optradt volgen er na de errorcode geen data meer. Als er geen fout optreedt, maar het aantal gelezen bytes is kleiner dan het aantal gevraagde bytes, is het einde van het bestand bereikt. ~PCCOM#6101 COMMANDO #61 subfunctie #1: record schrijven Invoer: handle (1 byte) aantal te schrijven bytes (1 word) xxx bytes Uitvoer: errorcode (1 byte) aantal geschreven bytes (1 word) De Atom stuurt de file handle, het aantal te schrijven bytes en de data naar de PC. De data worden naar het bestand geschreven en er volgt een terugkoppeling. Als er een fout optrad tijdens het schrijven is de errorcode ongelijk 0 en volgt er geen data meer. Bij succes wordt het aantal geschreven bytes teruggemeld. Als dit aantal kleiner is dan het oorspronkelijk aantal is de disk vol. ~PCCOM#6200 COMMANDO #62 subfunctie #00: zet formaat en processor opvragen Invoer: floating point formaat (1 byte) Uitvoer: floating point processor code (1 byte) Voor het floating point formaat wordt '0' gegeven voor Atom formaat of '1' voor het Intel8 formaat. De processor code is voor de diverse typen: 0 geen coprocessor aanwezig 1 80287 aanwezig 2 80387 of hoger aanwezig ~PCCOM#6201 COMMANDO #62 subfunctie #01: optellen Invoer: getal1 (5/8 bytes) getal2 (5/8 bytes) Uitvoer: som van beide getallen (5/8 bytes) De ingevoerde getallen worden bij elkaar opgeteld. ~PCCOM#6202 COMMANDO #62 subfunctie #02: aftrekken Invoer: getal1 (5/8 bytes) getal2 (5/8 bytes) Uitvoer: verschil van beide getallen (5/8 bytes) Getal2 wordt van getal1 afgetrokken. ~PCCOM#6203 COMMANDO #62 subfunctie #03: vermenigvuldigen Invoer: getal1 (5/8 bytes) getal2 (5/8 bytes) Uitvoer: product van beide getallen (5/8 bytes) De twee ingevoerde getallen worden met elkaar vermenigvuldigd. ~PCCOM#6204 COMMANDO #62 subfunctie #04: delen Invoer: getal1 (teller) (5/8 bytes) getal2 (noemer) (5/8 bytes) Uitvoer: quoti‰nt van beide getallen (5/8 bytes) Getal1 wordt gedeeld door getal2. ~PCCOM#6205 COMMANDO #62 subfunctie #05: absolute waarde bepalen Invoer: getal (5/8 bytes) Uitvoer: absolute waarde van getal (5/8 bytes) Van het ingevoerde getal wordt de absolute waarde teruggegeven. ~PCCOM#6206 COMMANDO #62 subfunctie #06: afronden naar integer waarde Invoer: getal (5/8 bytes) Uitvoer: afgeronde integer waarde van getal (5/8 bytes) Van het ingevoerde getal wordt de afgeronde integer waarde teruggegeven. Dit is echter nog steeds in floating point formaat genoteerd. (Bijv. 1,23 wordt 1,00) ~PCCOM#6207 COMMANDO #62 subfunctie #07: vierkantswortel Invoer: getal (5/8 bytes) Uitvoer: vierkantswortel van getal (5/8 bytes) Deze functie retourneert de vierkantswortel van het opgegeven getal. ~PCCOM#6208 COMMANDO #62 subfunctie #08: tangens (387+ vereist) Invoer: getal (5/8 bytes) Uitvoer: tangens van getal (5/8 bytes) Deze functie retourneert de tangens van het opgegeven getal. Dit getal moet in radialen gegeven worden. ~PCCOM#6209 COMMANDO #62 subfunctie #09: sinus (387+ vereist) Invoer: getal (5/8 bytes) Uitvoer: sinus van getal (5/8 bytes) Deze functie retourneert de sinus van het opgegeven getal. Dit getal moet in radialen gegeven worden. ~PCCOM#620A COMMANDO #62 subfunctie #0A: cosinus (387+ vereist) Invoer: getal (5/8 bytes) Uitvoer: cosinus van getal (5/8 bytes) Deze functie retourneert de cosinus van het opgegeven getal. Dit getal moet in radialen gegeven worden. ~PCCOM#620B COMMANDO #62 subfunctie #0B: omrekenen naar graden Invoer: hoek in radialen (5/8 bytes) Uitvoer: hoek in graden (5/8 bytes) De ingevoerde hoek wordt omgerekend van radialen naar graden. ~PCCOM#620C COMMANDO #62 subfunctie #0C: omrekenen naar radialen Invoer: hoek in graden (5/8 bytes) Uitvoer: hoek in radialen (5/8 bytes) De ingevoerde hoek wordt omgerekend van graden naar radialen. ~PCCOM#620D COMMANDO #62 subfunctie #0D: machtverheffen Invoer: m (macht) (5/8 bytes) n (getal) (5/8 bytes) Uitvoer: n^m (5/8 bytes) Teruggegeven wordt de m-de macht van n. Uiteraard zijn floating point getallen hier toegestaan. ~PCCOM#6300 COMMANDO #63 subfunctie #00: initialiseer AIC poort Invoer: adres printerpoort (1 word) Uitvoer: geen Het adres van de gebruikte printerpoort (378 voor LPT1 en 278 voor LPT2) wordt intern opgeslagen. Verder worden de handshakelijnen ingesteld voor de communicatie. ~PCCOM#6301 COMMANDO #63 subfunctie #01: stuur byte naar andere computer Invoer: data (1 byte) Uitvoer: geen Het opgegeven byte wordt naar de andere computer gestuurd. ~PCCOM#6302 COMMANDO #63 subfunctie #02: lees byte van andere computer Invoer: geen Uitvoer: ontvangen data (1 byte) Er wordt gewacht totdat een byte van de andere computer ontvangen is. Dit byte wordt geretourneerd naar de Atom-in-PC. ~PCCOM#6400 COMMANDO #64 subfunctie 0: versie opvragen Invoer: geen Uitvoer: versienummer (1 byte) releasenummer (1 byte) aantal xms pagina's (1 byte) ~PCCOM#6401 COMMANDO #64 subfunctie 1: pagina voorzetten Invoer: nieuw paginanummer (1 byte) Uitvoer: 16 kb data Bij dit commando wordt de huidige pagina niet opgeslagen in xmsgeheugen. ~PCCOM#6402 COMMANDO #64 subfunctie 2: pagina voorzetten Invoer: huidig paginanummer (1 byte) 16 kb data Uitvoer: geen Bij dit commando wordt de nieuwe pagina niet gelezen in het atomgeheugen. ~PCCOM#6403 COMMANDO #64 subfunctie 3: pagina voorzetten Invoer: huidig paginanummer (1 byte) 16 kb data nieuw paginanummer (1 byte) Uitvoer: 16 kb data De huidige pagina wordt opgeslagen in het xms geheugen en de nieuwe pagina wordt in het atomgeheugen gelezen. ~PCCOM#6500 COMMANDO #65 subfunctie 00: Definieer sprite base en initialisatie Invoer: XMS paginanummer (1 byte) Uitvoer: aantal beschikbare sprites (1 word) Alle sprites (max. 1024) worden in XMS geheugen opgeslagen vanaf de opgegeven pagina. Hierdoor is het mogelijk om nog een hoeveelheid XMS geheugen te reserveren voor andere doeleinden, zoals bijvoorbeeld data opslag. Als tegenprestatie geeft dit commando het hoogste spritenummer terug. ~PCCOM#6501 COMMANDO #65 subfunctie 01: Definieer sprite Invoer: spritenummer (1 word) spritedata (1024 bytes) Uitvoer: statuscode (1 byte) Om een sprite te definieren stuurt de Atom eerst het betreffende spritenummer naar de pc. Direct daarna stuurt de pc het statusbyte terug. Indien alles ok is, statuscode is #00, kunnen de 1024 bytes verstuurd worden. Een sprite bevat horizontaal en vertikaal 32 pixels. Voor elk pixel wordt ‚‚n byte gebruikt. Een sprite kan 255 kleuren hebben. De kleurwaarde 255 (#FF) geeft aan dat er geen pixel geplot moet worden, de achtergrond blijft dan zichtbaar. Sprites hoeven dus niet per definitie vierkant te zijn. ~PCCOM#6502 COMMANDO #65 subfunctie 02: Plaats sprite op het scherm Invoer: spritenummer (1 word) x-co”rdinaat (1 word) y-co”rdinaat (1 word) Uitvoer: statuscode (1 byte) Het opgegeven spritenummer wordt gecontroleerd op geldigheid en de statuscode wordt teruggestuurd. Indien alles ok is, statuscode is #00, kunnen de co”rdinaten verzonden worden. Deze co”rdinaten gelden ten opzichte van een eventuele verschoven oorsprong. De sprite wordt op het scherm getekend. Hierbij wordt geen rekening gehouden met een eventueel ingesteld grafisch venster. De scherminhoud op de positie wordt automatisch bewaard. De co”rdinaten worden in de administratie bijgewerkt. ~PCCOM#6503 COMMANDO #65 subfunctie 03: Verwijder sprite van het scherm Invoer: spritenummer (1 word) Uitvoer: statuscode (1 word) Met deze functie wordt een sprite van het scherm verwijderd. De oude scherminhoud wordt weer hersteld. De co”rdinaten blijven ongewijzigd in de administratie achter. Alvorens dit alles uit te voeren wordt eerst de statuscode teruggestuurd naar de Atom. ~PCCOM#6504 COMMANDO #65 subfunctie 04: Verplaats sprite op het scherm Invoer: spritenummer (1 word) x-co”rdinaat (1 word) y-co”rdinaat (1 word) Uitvoer: statuscode (1 byte) Om een sprite te verplaatsen wordt eerst subfunctie #03 aangeroepen en direct daarna subfunctie #02. Op de gebruikelijke wijze wordt de sprite van het scherm verwijderd en vervolgens op de nieuwe positie getekend. ~PCCOM#6505 COMMANDO #65 subfunctie 05: Plaats sprite op scherm, zonder administratie Invoer: spritenummer (1 word) x-co”rdinaat (1 word) y-co”rdinaat (1 word) Uitvoer: statuscode (1 byte) Deze functie is gelijk aan subfunctie #02 met uitzondering van het bewaren van schermdata en co”rdinaten. Deze functie is geoptimaliseerd om dezelfde sprite meerdere malen op het scherm te plaatsen. Het terminalprogramma controleert eerst of de opgegeven sprite al in de XMS buffer geladen is. Als dat zo is wordt deze niet nogmaals uit het XMS geheugen gekopieerd. Daardoor is de gehele routine sneller dan functie #02. Maar let erop dat er geen beeldschermdata bewaard wordt; de sprite kan niet met subfunctie #03 verwijderd worden. ~PCCOM#6506 COMMANDO #65 subfunctie 06: Opvragen sprite coordinaten Invoer: spritenummer (1 word) Uitvoer: statuscode (1 byte) x-co”rdinaat (1 word) y-co”rdinaat (1 word) Na terugmelding van de statuscode, #00 betekent alles ok, worden de co”rdinaten van de opgegeven sprite teruggemeld aan de Atom. ~PCCOM#6507 COMMANDO #65 subfunctie 07: Test overlap van twee sprites Invoer: spritenummer1 (1 word) spritenummer2 (1 word) Uitvoer: statuscode (1 byte) Het terminalprogramma berekent aan de hand van de opgeslagen co”rdinaten of de twee opgegeven sprites elkaar overlappen. Indien er een overlapping bestaat wordt dit kenbaar gemaakt in bit7 van de statuscode. Dit bit is dan gezet. ~PCCOM#6508 COMMANDO #65 subfunctie 08: Test overlap van een sprite met muis Invoer: spritenummer (1 word) Uitvoer: statuscode (1 byte) Het terminalprogramma berekent aan de hand van de opgeslagen co”dinaten of de opgegeven sprite en de muiscursor elkaar overlappen. Een overlapping wordt kenbaar gemaakt doordat bit7 van de statuscode '1' is. De bits 0,1 en 2 bevatten de status van de muisknoppen. ~PCCOM#1C80 COMMANDO #1C subfunctie #80: initialiseer muis Invoer: geen Uitvoer: aantal muisknoppen (1 byte) Deze functie initialiseert de muis en retourneert het aantal beschikbare muisknoppen. Indien er geen muisdriver ge‹nstalleerd is is het aantal knoppen 0. ~PCCOM#1C81 COMMANDO #1C subfunctie #81: initialiseer muis voor CLEAR 4 Invoer: geen Uitvoer: geen Functie #81 is een aanvulling op functie #80 indien de muis gebruikt wordt binnen een CLEAR 4 scherm. Het muiswindow wordt afgestemd op het effectieve grafische scherm. Tevens wordt ervoor gezorgd dat de muiscursor uitgezet wordt indien de Atom naar het eigen videogeheugen schrijft. Na de emulatie wordt de muiscursor weer aangezet. M.a.w. de muis wordt voor de Atom in CLEAR 4 geheel transparant. ~PCCOM#1C82 COMMANDO #1C subfunctie #82: muis informatie opvragen Invoer: geen Uitvoer: muis X co”rdinaat (1 word) muis Y co”rdinaat (1 word) knoppenstatus (1 byte) Informatie omtrent de muisstatus wordt hiermee opgevraagd; de co”rdinaten zijn 16 bits groot, de knoppenstatus is weergegeven als in onderstaand schema: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ linker muistoets ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ rechter muistoets ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ midden muistoets ÀÄÄÁÄÄÁÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÄÄ 0 ~PCCOM#1C83 COMMANDO #1C subfunctie #83: muis cursor aanzetten Invoer: geen Uitvoer: geen De muiscursor wordt zichtbaar op het scherm. ~PCCOM#1C84 COMMANDO #1C subfunctie #84: muis cursor uitzetten Invoer: geen Uitvoer: geen De muiscursor verdwijnt van het scherm. ~PCCOM#1C85 COMMANDO #1C subfunctie #85: muis informatie opvragen in CLEAR 4 Invoer: geen Uitvoer: muis X co”rdinaat (1 byte) muis Y co”rdinaat (1 byte) knoppenstatus (1 byte) Deze functie lijkt op functie #84, maar de muisco”rdinaten zijn aangepast naar een CLEAR 4 co”rdinaten stelsel; elke co”rdinaat is slechts ‚‚n byte groot. De knoppenstatus is weergegeven in onderstaand schema: ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ³7 ³6 ³5 ³4 ³3 ³2 ³1 ³0 ³ ÀÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÁÂÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄ linker muistoets ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ rechter muistoets ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄ midden muistoets ÀÄÄÁÄÄÁÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÄÄ 0 Om compatibiliteit te behouden met de hardware muispointer van Kees van Oss is de Y co”rdinaat van de bovenste lijn binnen het CLEAR 4 scherm 255; de onderste lijn is 0. ~PCCOM#1C86 COMMANDO #1C subfunctie #86: CLEAR 4 muiscursor selecteren Invoer: muiscursor (1 byte) Uitvoer: geen In het terminalprogramma zijn 32 voorgedefinieerde muiscursors opgenomen welke met deze functie gekozen kunnen worden. Deze zijn gelijk aan de hardware muiscursors van Kees van Oss. Deze functie dient gebruikt te worden in CGA modi of in emulatie van Atom grafische modi; de cursor verschijnt dan in een andere kleur zodat deze duidelijker zichtbaar is. ~PCCOM#1C87 COMMANDO #1C subfunctie #87: muiscursor selecteren Invoer: muiscursor (1 byte) Uitvoer: geen In het terminalprogramma zijn 32 voorgedefinieerde muiscursors opgenomen welke met deze functie gekozen kunnen worden. Deze zijn gelijk aan de hardware muiscursors van Kees van Oss.