A6om NIEUWS

_ Jarreanetessses nummer «£

oee | ZE AE op WK ERAAARAA Ai EIDER

PAG. 2 AIFOM NIEUWS

UIt De FEDERATIE

Bestuur:

Voorzitter: Secretaris: N.Stad J.Hartog Plataanweg 47 Kevenbergseweg 60 1544 PB Zaandijk 6871 WK Renkum Tel.075-280808 Tel.08373-13757 Clubwinkel: Hardware cie.: P.Grevelt Y.Tuk

Emmastraat 22 Postbus 257

1782 PD Den Helder 2980 AG Ridderkerk Tel.02230-23453

Contributie 1987: fl. 60.00 Leden buitenland: fl. 75.00

Rekeningnummers Atom Computer Club: Giro 5244293

Redactie Atom Nieuws: Joop Ballijns Harry de Ruiter

Penningmeester: T.Rutten Berkenlaan 24 3737 RN Groenekan Tel.03461-3495

Redactie Atom Nieuws: H. de Ruiter Polarisstraat 25 8303 AC Emmeloord

Ledenadministratie: Datasheets: S.van Leeuwen G. Akkerman Kompasstraat 32 Wikke 1

1973 PX IJmuiden 1273 BR Huizen Tel.02550-22435 Tel.02152-60294

Uiterste datum inlevering copy: nr. 87-4 86-07 1987

De clubwinkel:

80-koloms videokaart. inci.alle onderdelen behalve de RAM-IC's,

bouwpakket 80-koloms videokaart, gebouwd en getest

£1,130.00

„excl.RAM-IC's f1.180.00

Geheugenkaart: 16 kByte,excl.onderdelen fl. 35.00

Schakelkaart;: meerdere EPROM's op Axxx Minischakelkaart Z-80 kaart:CP/M excl. onderdelen

fl. 47,50 fl. 16.00 fl. 65.00

Herdruk ACORN NIEUWS 1982; 97 pag .wetenswaardigheden fl. 6.00

ATOM NIEUWS jaargang 1983, ruim 450 pag. fl. 30.00 ATOM NIEUWS jaargang 1984. ruim 650 pag. fl. 35.00 ATOM NIEUWS jaargang 1985, ruim 650 pag. fl. 35.00 ATOM NIEUWS Jaargang 1986, ruim 500 pag. fl. 35.00 ATOM-WARE 1: Basic interpreter van de ATOM, 98 pag. fl. 6.00 ATOM-WARE 2; ATOM Disc Operating System,68 pag. fl. 5.00 ATOM-WARE 3; ATOM Monitor Operating System,80 pag. fl. 5.00 Levering;

Bij uw reg.penningmeester, eventueel rechtstreeks bij de fed. penningmeester.Bij rechtstreekse bestelling dient u het bedrag

van het gewenste artikel te storten op

de giro van de federatie

onder vermelding van de naam van het artikel en uw lidnummer, Uw

betaling dient vermeerderd te zijn met

fl. 4.00 voor portokosten.

INSGUDSCGPGAVE ATOM NTEUWS Er: pag 2 uit de federatie

pag 3 inhoudsopgave

pag 4 regioschijven

pag 5-9 Eprom programmer

pag 18-15 Atom Pascal

pag 1& Normen

pag 17 Tips Z80

pag. 18 Selectie Exxx Eprom pag 19-21 FDC naar #BC468

pag 22-25 Midi

pag 26-28 Zeeslag

pag 29-32 Programmeren deel 2 pag 33 Ram statement

pag 34-35 Ninput

pag 36 Viditel

pag 37-38 Foneem

pag 39-40 GTH afstandsberekening pag 41-43 Highway

pag 44-48 MDCR DOS-Z2

pag 49 Memory editor

pag SQ kelems infomaster pag 51-59 Dial-2

pag. 60 Regionaie adressen

ATOM NIEUWS

is een uigave van de federatie ATOM computerclubs

Ned/Belgie en verschijnt & - 8 keer per jaar.

De redactie gaat er vanuit dat de ingezonden copy gemaakt is door de inzender tenzij

in de publicatie uitdrukkelijk anders is

vermeld.De aansprakelijkheid echter betreffend de auteursrechten ligt zonder enig voorbehoud volledig bij de inzender.

PAG. 4 ATOM NIEUWS INHOUD REGTOGSCHEJVEN

PROM87 B22900 BOAFAF BOIGI1 D13 SPRITES 202900 BLAFAF LUESIS LID ZEESLAG 022968 BBAFAF LUIEUZ 285

Regioschijf 6-3 _ POKE 002908 BBAFAF 090261 802 MDCR4 ©0298 LOC2BZ BEIDD3 BAA MDCR3 032908 LOC2B2 BRIIFB BFB MDCR2 002988 BAC2B2 BAIDD3 B7A TDISK ees2e0 vOLz00 LIOBLB 372 ADISK 037020 LO7000 BOBFFF 342 TMDCR uoezee a0Ss20a BVAD2B 055 #MDCR @34090 OOBBIS AA4ISC B51 AMDCR 827008 007002 221980 041 RFDRMAT 222930 GOBSI8 BELIJD DIF TFDRMAT 222328 B02509 QE220P OSD RNDTEST GO2808 OOBSIE BUABAA D36 WNDTEST 002800 BOBEIE LAUZAA LIS MDCR1 UO2900 BEBEIB AODBFA 29 RAMSTAT 202955 002902 A2A3FF OAD OTH CODE BOC2B2 DEBS 045 NINPUT UU2900 OUC2B2 LUBACB DIE ENDEX 032800 BOAQ71 LAZAIS 039 FONEEM vu2900 LO2I0D ULBGFF 032 ACL-2 UEELLD 0O80LD DLIEDD DIA REGFAL 882905 2BAFAF DOOF3O BCS REG. ART @24008 BOAO71 OO1BD7 BAC 6264 02828 207071 940782 BEC MERcode DA6LID BOGFFO DI100B D7C MERtoel 994200 DOAO71 D9103E B&B ACORN 925008 GOC2B2 BUBDIC BSD BACKUP 4 032923 BOC2B2 OPHBIC 051 AVE. Mm 292908 0UC2B2 LEB7F7 049 MATR. A BE400D BLAD71 QO2D47 DIB MATRIX 002908 22C282 OO1ECE 202

Regioschijf 6-2 _ SUNDORI 002909 BLC2B2 DAO97B 138 PARWEER 002900 OOC2B2 LALA7G 129 BUNDESL 052900 BLC2E2 LAEDCI 11B GEBODAG 092908 OOC2B2 089391 117 FEESTDA U82908 BOC2B2 000428 110 TYPWRIT G2S200 DEC2B2 AUEISA 106 BUGBATT WUZ900 BOC2B2 LODIEA DFE LEEFTYD 092908 BOC2BZ Q9167B BE7 BRAILLE ©0298 28C2B2 OAIIFD ODS BLOBUST 002708 BBC2B2 BELSFF BCF KIEZEN @02900 BBC2B2 LLOISF UCS ZEKAMER 092922 OOC2B2 BI1413 OBO BOWL ING 002902 LOC2B2 @UABD1 BA4 DOMINO 002999 DAC2B2 BEIDAA BI ED64-B Z0AGTD BRAUDO 0B100D DAF SMURF @02900 BAC2B2 LA2UBE 242 SALFAA VEADDU LOALGE UP100D 052 DIGITZR 002999 BOCZB2 OUIJCC DSE BACKUP @02908 QUCZB2 COLAII B33 2340QVDU oosens ABSorFE LLOBEP 028 DUMP voe00s BOHLOO 000159 829

VERBRUI 2U2F00 BICZE2 OA2EFF BOOZ

EPROM PROGRAMMER SJAAK GEENE ATOM NIEUWS PAG. >

De Eprom Programmer aangepast voor 2716. 2764 en 27128.

Uitgangspunt is het schema in A.N.3-1 pag.17 en de software uit A.N,2-6 pag.26.

Om met de 27/16 te beginnen. In A.N. heb ik een paar maal gelezen dat de progammer niet werkt voor de 2716. Dat heeft twee oorzaken: in de program-mode wordt de OE doorverbonden met de CE, maar volgens de databladen moet de OE minimaal 2 uS vroeger hoog worden als de CE, daarom heb ik de OE direct aan +5 gelegd. In de read-mode moet de OE laag zijn. De tweede oorzaak zit in de software, De programpuls is negatief, dus gaat hoog-laag-hoog. In afwijking van alle andere eproms moet de programpuls van de 2716 positief zijn dus: laag-hoog-laag. De readpuls is voor alle eproms gelijk en is negatief.

Voor de 2532 werkt de programmer gewoon goed en voor de 2732 hoeven alleen maar een paar aansluitingen worden verwisseld.

De 2764,

Deze eprom is 8k dus er komt een adreslijn bij: Al2 en bovendien heeft het IC 28 pennen. De aansluitingen zijn compatible met de 2732, dus 24 pennen. De andere 4 zijn: Vpp, A12, Vee en PGM. De software aanpassing is eenvoudig: het adresbereik gaat van 4k naar Sk en het startadres van het te copieren programma moet naar het lage geheugen, omdat in het hoge geheugen geen Bk blok meer vrij is. Ik heb gekozen voor #4000 tot #6000,

De 27128.

Deze eprom is 16k dus er komt nog een adreslijn bij: A13. Deze A13 komt aan pen 26(24), waar bij de kleine eproms de +5 aan zit, dus moet dat omgesckakeld kunnen worden. Verder zijn de aansluitingen gelijk aan de 2764. De software aanpassingen zijn: het adresbereik wordt 16k en het startadres van het te copieren programma komt nog lager te liggen, omdat nu een blok van 16k nodig is. Ik heb gekozen voor #3000 tot #7000.

Verder heb ik nog aanpassingen gemaakt voor het programmeren van de A-versies, voor de 2732A moet de Vpp 21V zijn en voor de 2764h en 27128A moet Vpp 12.5V zijn. In het programma worden waarschuwingen gegeven voor het instellen van Vpp.

Fig.l geeft het schema. De voornaamste wijzigingen zijn de schakelaars. Sla-f verzorgt de omschakelingen voor de diverse eproms, zodat de juiste spanningen op de juiste aansluitingen

PAG.

& ATOM NIEUWS EFROM PSULGKAMMER SJAAK GEENE

nt

en ® ti Ed

2e ee

ï

re

redken td

staan. S2a-d verzorgt de omschakeling van read naar write. Het voordeel is ook dat de Vpp generator in de read-mode uit staat en geen stroom trekt. S3 tenslotte schakelt de Vpp. De ted Di geeft de program stand aan. De leds D6-D8 geven het epromtype aan. Het omschakelen is tamelijk ingewikkeld geworden, maar is noodzakelijk als de programmer zo universeel moet zijn. Uw eigen wensen zijn natuurlijk aan de hand van het schema aan te passen, zodat het voor specifiek gebruik eenvoudiger wordt.

1632 esra)

Erber (1) Zj em )

Eg

&r

De schakelaar S2 MOET van het z.g. non-short ing type Zijn, anders kost dat een ATOM. Si hoeft dat niet te zijn als men voor het inprikken van de programmer de schakelaar in de juiste stand zet. S3 is een speciaal type met 3 standen,

zodat in de middenstand alle contacten verbr zijn (on-off-on). rbroken

EPROM PROGRAMMER _ SJAAK GEENE

ATOM NIEUWS PAG.

L

ONW

GT U ‘U 'D U 'D U 'U "U

11 13 15 17 19 21 22 23 24 25 26 27 28 29 31 33 37 39

Voor spoel Ll heb ik een

geschikt en goed verkrijgbaar type gevonden n.1l. 3122 108 9146, uit Philips K9 en Kil KTV. Het is een witte ronde spoel in de voedingsunit en in slooptoestellen ruim voorhanden. De weerstanden R1l-R14 moeten uit meerdere weerstanden samengesteid worden om de juiste waarde te verkrijgen. Dit is betangrijk i,v.m. dejuiste progammeerspanning. De software. Ik ben uitgegaan van PROM.V2,0. Daarin tot regel 50 de veranderingen aangebracht nodig voor het conditioneel assembleren, de variabelen A,B en C bepalen de read en programpuls, De variabele E het aantal te lezen of te programmeren bytes, de variabele G het begin van de te programmeren bytes, de variabele J bepaalt samen met E hoe hoog de programmeerspanning Vpp moet zijn. Het assembleren gebeurt bij mij standaard op #400, omdat bij de 27128 zoveel geheugen nodig ís, ook wordt dan de source overschreven. De variabele D in regel 50 kan dan eventueel gewijzigd worden.

Verder heb ik de regelnummers zoveel mogelijk geìijk gehouden en de aanpassingen tussengevoegd, Veel plezier met de opgevoerde programmer.

Sjaak Geene. Zonneweide 6, 5221BH 's Bosch.

PROGRAM EPROM PROGRAMMER

„$12;DIMH(O)

* EPROM PROGRAMMER er hi BEFORE STARTING THE PROGRAM"' SWITCH PROGRAMMER TO THE"

RICHT POSITION" '

* CHOOSE : ent

FOR 27128 : halli

FOR 2764 ent

FOR 2716 mer FOR 2532 : enn

Pp," FOR 2732 :

DO INPUT" YOUR CHOISE “F‚'

UNTIL Fò=i1 AND FX=5

PEN

RRRS

GN WNE

DO XIF Fei OR F=2 OR F=5 INPUT" A-TYPE? (Y/N) “SH

UNTIL $H="Y"OR $H="N"

ELSE

IF F=l:A=#EC;B=#CC;Ce#CE: E=#40 ; G=#30

IF F=2;A=#EC; BCC; C=#CE;E=#20; G=#40

IF F3; A=CC;B=tEC; C=#EE; E=4#08; G-#84

IF F=4 OR FuS;A=#EC;B=#CC;C=$CE;E=#10; G=4#04 XIF F=1l OR F=2 OR F=5 AND $H="Y";J=TRUE ELSE J=FALSE

PAG.

B ATOM NIEUWS EPROM PROGRAMMER _SJAAK GEENE

50 P.$12;D=#0400; @=0 60 P."ASSEMBLING TO #"&D' 70 DIM VV47; F‚N=Q TO 47:VVN=DiN, 80 F.lel TO 2;P.$21;P=D SOL; INIT ter 100 LDA@#55 ;:STA#208 110 LDA@O;STA#B8OE ; LDA@#CC : STA#BBOC 120:VV7 JSR#F7D1: ] 130 ?P=#0C:$(P+1)="EPROM PROCESSOR"; ! (P+16) =#EAOAOAOD: P=P+20: { 140:VV10 JSRVVO:JSRVV1 : JSRVV41 : JSRVV34; JSR#CDS4 ; JSR#F7D1 : } 150 $P="INSERT EPROM";P=P+12: (NOP 160 JSR#FE94; JSR#CD54 170 \**READ COMMAND** 180:VV11 JSRVVO:JSRVV1 : JSRVV41 ; LDAGHSF : JSR#CDOF 190 LDA#100:CMP&#51 : BNEVV33 200 LDA@O:STA#B8OC; LDA@#S2 ; STA#208 ; JMP#C2CF 210:VV33 CMP@#42; BEOVV12; CMP@4#5 2 : BEOVV18 : CMP@#5 3: BEQVV26 220 CMP@#57 ; BEQVV 30 ; CMP@#56 : BEQVV21 230 JSRVV6: JSRACD54: JMPVV 11 240:VV30 JMPVV28 250O\** BLANK? ** 260:VV12 JSRVVO 270:VV13 JSRVV1:JSRVV41 : JSRVV5 ; LDA@G#FF : CMP#95 : BNEVV14 280 JSRVV2:BEQVV13;JSRVV15 ; JSRVV16 ; JMPVV11 290:VV14 JSRVV15;JSRVV6 : JSRVV17 : JMPVV11 30ON\**READ* * 310:VV18 JSRVVO 320:VV19 JSRVV1:JSRVV41:JSRVVS:;LDY@O:LDA#95;STA(HI3) .Y 330 JSRVV2;BEQVV19:JSRVV20: JMPVV11 340\**CHECKSUM* * 350:VV26 JSRVVO 360:VV27 JSRVV1:JSRVV41; JSRVVS 370 CLC;LDA#95; ADC#96 : STA#96 ; LDAQO : ADCH97 ; STAH97 380 JSRVV2:BEQVV27 ; JSRVV 25 : JMPVV 11 IION\**VERIFY** 400:VV21 JSRVVO 410:VV22 JSRVV1:JSRVV41: JSRVV5 : LDA#95 420 LDY@0:CMP(#93) ,Y:BNEVV23; JSRVV2;BEQVV22 430 JSRVV24: JSRVV16 ;: JMPVV11 440:VV23 JSRVV24; JSRVV6 ; JSRVV17 ; JMPVV11 450\**WRITE** 452:VV28 JSRVVO:JSRVV1;JSRVV42: JSRVV31 453 LDAGE:CMP@8; BEOVV36 : CMP@#10 : BEQVV44 : CMP@#20 : BEQVV45 : JMPVV45 454:VV36 JSRVV39: JSRVV43: JMPVV40 455:VV44 LDA@J : CMP61 ; BEQVV 37 ; JMPVV36 456:VV37 JSRVV38;JSRVV43 : JMPVV40 457:VV45 LDA@J : CMP@I1 : BEQVV46 : JMPVV 37 458:VV46 JSRVV47; JSRVV43; JMPVV40 465:VV40 JSR#FE94; JSR4CDS4 : JSRVV 35 : JSRAFE6 6 470:VV29 JSRVV1;JSRVV42 475 LDY8O;:LDA(#93),Y;STA#B800 : LDA@A : STA#B8OC 480 JSR#FE66 ; JSR#FE66 : JSR4FE66 490 LDAGB:STA#BBOC : JSRVV2 : BEQVV 29 : JSR4CDS4 : JSRVV20 500 JSRVV34: JSR#FE94 ; JSR#CDS 4: JMPVV11 BION\**INIT ADRESSE

EPROM PROGRAMMER SJAAK GEENE ATOM NIEUW PAG,

hd

520:VVO LDA@+FF ; STA#B803

530 LDAGO:STA#91:STA#92:STAH93: STAHOG : STA#97

540 LDA@G;STA#94; JSRHFE6GB: RTS

550\**WRITE ADRESS**

560:VV1 LDA@G#FF;STA#B802: LDA#91 : STA#B8O1 ; LDA4#92 : STA#BBOO ; RTS 570:VV41 LDAGHCE; STA#BBOC ; LDA@#CC ; STA#BBOC ; RTS 575:VV42 LDAGC;STA#B80C: LDA@B; STA#B8O0C: RTS

SBON\**INC ADRESS**

590:VV2 INC#93;:BNEVV3: INC#94

600:VV3 INC#91;BNEVV4; INC#92

610:VV4 LDAGE:AND#92:;RTS

620\**READ BYTE**

630:VV5 LDAGO:STA#B802 ; LDAGHEC ; STA#BBOC

640 LDA#B800: STA#9S : LDAG#HCC : STA#B8OC; RTS

65O\** ERROR **

660:VV6 JSR#F7D1:]:?P=7:SP+I="ERROR '":P=P+7: [:NOP;RTS 670\** "BLANK CHECK "**

680:VV15 JSR#F7D1:]:SP="BLANK CHECK ":P=P+12;: [;NOP:RTS 6ION* OK EN

700:VV16 JSRAF7D1:1:SP="OK":;P?22=13:P23=10: P=P+4: (NOP:RTS Z1ON\**"ON #(ADRESS) "**

720:VV17 JSRHF/D1:J:SP="ON #";P=P+4: [;NOP

730 LDA#92:JSR#F802:LDA#91 : JSRHFBO2 ;: JSR#CDS4; RTS ZAON** "VERIFY" **

750:VV24 JSR#F/D1:1:$P="VERIFY ":P=Pt7: [:NOP:RTS 760N\**"READY'"**

770:VV20 JSR#F7D1:):$P="READY";P?5=13:P26=10:P=P+7: (NOP: RTS 78ON** "SUM"

790:VV25 JSR#F7Di:}:SP="SUM=k# ";P=P4+5: [;NOP

800 LDA#97;JSR#F802: LDA#96 : JSR#FBO2 ; JSR#CDS 4; RTS 810\** "SET program'**

820:VV31 JSR#F?7D1:}:SP="SET program':P?211=7;P=P+12

830 [;NOP:RTS

B4O\** "SET read"**

850:VV34 JSR#F7D1:):$P="SET read':;P?8=7;P=P+9

860 [;NOP;RTS

870\** "PROGRAMMING ""**

880:VV35 JSR#F7D1: ) : $P="PROGRAMMING'":;P?11=10;:P?12=13:P=P+13 883[:NOP:RTS

885:VV47 JSR#F7D1:}:sP=" 12,5 “:P=P+6:{(;NOP:RTS 886:VV38 JSR#F/D1;};SP=" 21 ";P=P+4; {:NOP;RTS

887:VV39 JSR#F7D1;];SP=" 25 ";P=P4 :NOP:RTS

888:VV43 JSR#F/D1:}:$P="VOLTS! P?8=10;P?9=13;P=P+10 889 [;NOP;RTS

890} ;N. 4

900 P,$6"CODE AT #"&D'"FINISH AT #"&P'

910 P,"LENGTH="P-D!" (#"&P-D") BYTES"

915 P."PROGRAMMING FROM #"&G*256

917 P." TO #"&(G+E)*256-1'

920 P,"TO START: PRESS KEY"

930 LINK#FFE3:@=8:LINKD:E.

„AG. 14 AOM NIEUWS ATOM PASLAL

ATOM PASCAL (VER. 1-1986)

LINK83000 PROMPT: « PROGRAM: #3000 - S7FFF

WORKING AREA: #6 - &FF, #200 -#2FF USER AREA: #8200 - #97FF:

TEXT 3800 -r Top line position 8 Bottom line position (°.”} ATC *N/n Next n lines (°.“zall,RTN=1} *U/n Up n lines …F Find line containing string 36C4 Istring IN/OUT «Rr Read text from keyboard ? *L/n List n lines TV/printer -C COS/DOS (To ATOM COS5/DOS) 8200 SAVECFILE” ---- LOAD" FILE" Back ta PASCAL = Control P {Useless after BREAK) TOGGLE *A Assignment tracing. Print values changed by Assignment and FOR statements. ha Statement tracing. Print text unit just before it is executed. EDITING *Ò/n Delete n lines „1 Insert one line ahead of current line ? «Sp (SP=SPACE) List current line -v View 5 lines EXECUT ION 6 60, execute program „Kk Check program syntax *, Execute and trace program -X Execute immediately one statement (STM) 1STM -P Page, radefine number of printer colums (desimal}. RTNs64ldefcult} HM Shaw number of free user memory bytes (desimal} «2 Delete program (cold start), N or SPACE z NO,Y = VES …E End PASCAL, back to BASIC. {BREAK} ESC Stop execution

ArUM PASCAG ATOM NIEUWS PAG. 11

ATOM PASCAL is both à compiler and an interpreter. It compiles source statements written in Pascal directly from the keyboard into an internal format. The internal format contains both the object code to be interpre- ted upon execution and source code identifiers for formatted printout to support editing at the source code level. Identation levels are set automaticalìy to aid debugging. The object code (program) can be saved and loaded on tape or disk. (Starting address of code in address #9782/B3). Input Lines must be restricted to 60 characters. Machine-code subroutines can be called using SUBR(CALL) or FUNC(CALt). These subroutines must not contain operating system vectors {(#200-#24B):

PROGRAM BLEEP:;

VAR BLEEP=SFD1A: CHAR;

BEGIN

SUBR(BLEEP } lar WRITELFUNCIBLEEP)) END

A well known textbook in Pascal is “Pascal User Manual and Report”,

Springer Verlag (1978) by Jensen and Wirth. Most of these Standard Pascal features are implemented:

Reserved Words

AND ED sin ser ARRAY FILE Hor THEN BEGIN FOR or To CASE FUNCTION or „TYPE CoNsT Soro OTHERWISE UNTIL

L_piv Ie PPOCEDURE VAR vo IN PROGRAM WHILE DOWNTO LABEL RECORD WITH ELSE Mod REPEAT

Reserved Symbols

n - * / = = < >= o < > } te -) E 1 |L_Word Function Operand (s) Result ABS Absolute Value Integer, Real | Same as Operand ARCTAN | Arc Tangent Integer, Real | Real cos Cosine Integer, Real | Real Exp Exponent Integer, Real | Real LN Natural Logarithm Integer, Real | Real 200 Integer Boolean ROUND Round Real Integer Sin Sine Integer. Real | Real sor Square Integer. Real | Same as Operand SORT Square Root Integer, Real | Real TRUNC Truncate Real Integer

PAG.12 ATOM NIEUWS ATOM PASCAL

andard Ident:frers

constants: FALSE TRUE Types: BOOLEAN CHAR INTEGER REAL STRING TEXT. Fsnetrens: Aas FUNG ROUND stee ARCTAN Le sis TRUNC car ooo SOR cos oro soRT EXP PRED SUBR Procedures: READ READIN * _ WRITE WRITELN | EREAK 1

Character Functions:

succ Successar Scalar except Real Same as Operand

Fuora___| runesion Operand («) Result H

cur | Character Integer Character

arn í Oedsnat Scatat except Real Integer

PRED | Predezessar Scalar except Real | same as Operand

Bachine Language Functions

word _[ ranstien ____ |operand ts) | aesutt

MEN

Suhroutine Call

Function Call

ATOM PASLAL ATOM NIEUWS PAG.15

Arsthmerie Operators

ISymbel/word | Operatzen

+ Aadieien (plus sagn)

- Subtraction (minus sign)

. Multaplication 1 Division viv Division (yields à truncated integer result) MOD Î Modules (yields the remainder of divisian} J Relaticnal Operators |Symbol/Wword Operation _ Gs nom > Greater than >en Greater than or equal to < Less than < Less than or equal to - Equal to e Not equal to

nm

EXECUTION-TIME DIAGNOSTICS

The form of the diagnostic message is

ERROR &nn text unze

After conzrol returns to the command interpreter, a series of WRITELNs may be executed with the @X command to examine the state of the data. The position of the text unit pointer insures that visibility of identifiers is the same aa that which prevailed at the time of the error. The data structures built during execution are not initialized until the next <G er + is executed, so Gata are available for examination,

PAG. 14 ATOM NIEUWS ATOM PASLAL

The *S ERROR* dragnostie indicates a syncax error.

e syntax error message, the right-most since the

e case of

“a” usually gives a strong clue about the err sedzarely to 1es right is the one whach led

character 27 the syncax analyzer into the impasse. If the right-hand “at ys zhe last character of the diagnostic message, something 1s missing at the end of the input, for example,

a Zinaì semicolon in a declarataon or definition.

Note: Error numbers with an asterzak ace internal checks.

Their occurrence may 1nticate less of menory intel

ore

oa .

03 Value Stack has excaeded avarlahle space.

aar

os-

a& Too few actual parameters .

07 Too many actual parameters

aa Actua) parameter of a VAR Zormal parameter zz an expression.

os

10

21 Nonordinal type where ordinal (scalar) tyoe required.

12 Maximum permissible dynamic statement denth of 24 exceacet.

13 Ordinal value computation cut of range (Array and ser selection)

ier

ist

16 _ Expression result type should be Boolean and ze not.

1? _ Punetion identifzer on left-hand side of assignment does zot refer to a declared function.

18

19 _ type compatibiliey error in assignment or actual value parameter.

20 Type {a} improper for operator.

21 Attempt to make array selection on a nonarray.

22 String leng:h excess or operation.

23 Eapty string inproper for operation.

24

25 Attenpt to negate a nonnumeric.

26 Operand should be Boolean.

27

za GoTO with destination textual depth greater than that of coro.

29 Actual/formal parameter type discrepancy.

30 Control variable has changed zn FOR loop.

31 Argument of CHR not in 0..255,

32 Value less than lower limit of eubrang:

EE] Value greazer than upper limit of subrange.

34 Argumens not ordinal (scalar).

35 Argument not teal or integer.

43

sl 52 53

GOTO refers to an undefined label, ATOM NIEUWS PAG- 15 Actual/formaì VAR parameter type discrepancy.

Array reference to STRING with noninterger subscript.

Right operand of IN not a set ar packed set. ATOM PASCAL

Source String to long for receiving string. Improper argument of record select (.} operator.

No match between value of expression and CASE constants. Argument of WITH is not a record variable.

Hore than the maximum of 16 records in a program.

Field identifier not preceded by “‚" and not in the scope of a WITH,

Processor stack pointer is hicher than when break dis- continued executzon: Break-in-progress is now false and «G will start at beginning.

Processor stack is about to overflow.

Attempted division by zero.

Floating-point overflow.

Pixedepoint overflow in TRUNC or ROUND,

MOD with negative divisor.

Diagnostic messages which occur durang hriading have the

following distinctive form: an indicator Line deseribing the

error, followed by ane or more program text lines deseribing

where the ercor occurred. The following indicator lines can

eccur:

*UNDEF* identifier *DUP* identifier *UNDECL* Label “DUP* label *TYPE* ident:fier

The indicator lines *DUP* identifrer and *UNDEP* identifier are each followed by one text unit which contaans the cited identi-

Frer occurrence,

The *DUP* d1agnostic is generated at a defining occurrence of an zdentifier af the identifier has a prior defining occurrence

at

the same block level,

The *UNDEF* diagnostic is generated at a referring occurrence of an identifrer 1f the identifier has no prior defining gecurrence at the same or at any higher block level which would

be visible to this referring occurrence.

The indicator line *“TYPE* identifier can indicate an incons:s-

tency between the types of the upper and tower bounds of 2 sub- range type: it can also be generated by a STRING type with a noninteger length. The identifier in the indicator line is a

type identsfrer appearing ìn either the sabrange or string

type: this udentifer refers to a type which 1s ineonarstent

wich the definition in which it occurs, This definition occurs in the text unit following the indicator line,

PAG. 1& ATOM NIEUWS __NORMEN YvO Trut

Ni ï :

Naar aanleiding van het feit dat er weer wat nieuwe clubontwikkelingen plaats nodig hebben in het #BXXX blok hierbij weer een nieuwe memory map met de benodigde uitleg.

De 280-CP/M kaart heeft een extra VIA nodig welke geplaatst zal worden in het #BXXX blok. De keuze van het definitieve adres is gemaakt op #BCOO. Waarom?, wel in het #BCXX blok staan alle diskcontrotlers (de GDOS, en de ACORNDOS volgens de nieuwe normwijziging). Het schema om de VIA op het adres #BCOO te krijgen is bijgeleverd bij iedere Z80-CP/M kaart. Voor de rensen die niet zo bedreven zijn in het lussen van zo'n printje kan ik melden dat er een printje zal komen om de VIA te plaatsen. Er zat zo hard mogelijk gewerkt worden om dit in een respectabele tijd voor elkaar te krijgen.

Verder worden er behalve de Z80-CP/M kaart nog wat zaken ontwikkeld zoals een “echte” Centronics interface (ontwikkeling van de regio limburg). De plaatsing hiervoor valt op de plaats van de originele ATOM-VIA namenlijk #B800. Natuurlijk wordt een en ander wel goed uitgedecodeerd. (op 16 bytes nauwkeurig… …. )

Over de verder in de memory-map besproken zaken kunnen we nog geen goede uitleg geven, maar deze zaken komen wel binnen afzienbare tijd, dus vandaar dat de adressen alvast gereserveerd zijn binnen de 1/O-memory-map.

Nogmaals de inmiddels bekende kreet: U bent niet verplicht zich aan de plaatsingsnormen te houden, maar het is wel verstandig, want hoe meer uitbreidingen er in het #BXXX blok komen, hoe meer U uit eigen initiatief geplaatste uitbreidingen in de weg zult zien zitten. Daarvoor adviseert de hardwarecommissie nogmaals: houd alstublieft de clubnormen aan, anders word het voor U een puinhoop in het #BXXX

SFFFE MONITOR me, Enis #EDOO = SBFEF me - Foaring Point Doo - #BE00 vero BASIC vaEo0 err mmtje id #B000 +BDo0 ROM/RAM —_j #A000 #BCOO #9800 Acorn DOS #BC48 Graphics «8300 opos #8000 #BC10 Z80-CPM soo Y #5C00 V6k-kaart RAM wa400 4000 “3000 Boos RAM A Booo #2800 DOS-workspace 2000 RAM 40400 Zero Page 0000

TIPS 28390 Yvo TUK ATOM NIEUWS PAG. 1/

Ti Z80-CP ryik:

De gebruikers van de Z80-CP/M kaart zullen reeds gemerkt hebben dat er bepaalde zaken besproken worden in de handleiding die eigenlijk niet direct mogelijk zijn, omdat er bijvoorbeeld geen ACORNDOS-FDC aanwezig is in het systeem (de EPROM die geplaatst moet worden in het FEXXX blok) In dit verhaaltje zullen we een en ander duidelijk maken over de nodige aanpassingen die aan de ATOM gepleegd moeten worden om de zaak op de Z80-CP/M kaart te laten draaien. Allereerst de #EXXX EPROM. Indien U op de schakelkaart geen ruimte meer hebt om een #EXXX blok te plaatsen staan hieronder twee methoden om zonder al te veel problemen een #EXXX blok in de ATOM te creeren. Methode t: U heeft een schakelkaart #AXXX), en geen extra monitorROM op voet 24. (Voet 24 op het ATOM-moederboard is dus geheel vrij.) Maak het decoderingsschakelingetje zoals dat beschreven is in figuur 1, en schrap op het moederbord bij IC24 of voetje 24 pen 20 door, en soldeer een draadje met het selectiesignaal op die plaats. (Het is eventueel ook mogelijk om het pootje van de EPROM uit te buigen, en dan het draadje vast solderen aan dat pootje. Het HEXXX blok is nu voor U beschikbaar Methode 2: U heeft voetje 24 in de ATOM bezet door een EPROM, en deze plaats dient bezet te blijven door diezelfde EPROM. Maak het decoderingsschakelingetje zoals dat beschreven is in figuur 1. Soldeer op de EPROM die geplaatst is in voet 24 een IC- voetje met gedraaide contacten, waarbij de middenverbinding (zie figuur 2) is verwijderd. (Anders zou de ondergelegen EPROM nooit meer gewist kunnen worden.) (Het verdient trouwens aanbeveling om op die onderste EPROM een stikkertje te plakken wat zeer makkelijk verwijderbaar is, omdat het niet echt makkelijk gaat door de opgesoldeerde voet.) Plaats nu op de IC-voet de nieuwe #EXXX DOS-EPROM, en buig het selectiepootje (nr. 20) nu uit. Soldeer op dit pootje de draad die uit de decodering komt, en ziedaar: ook een #EXXX blok beschikbaar. Andere zaken voor wat betreft de Z80-CP/M kaart: De VIA...Een probleem op zich want er is op dit moment geen echte VIA-kaart beschikbaar voor de Z80-CP/M kaart. De normplaatsing is zoals al eerder beschreven #BCOO. Deze plaatsing kan heel makkelijk, en totaal heeft U slechts drie IC's en 2 connectors nodig voor deze uitbreiding. Let echter wel op het plaatsen van de doorverbindingen aan de VlAzijde, en zorg ervoor dat de connector naar de Z80-CP/M kaart goed vast zit. Voordat U het systeem aanzet is het verstandig om even te controleren of de connector niet verkeerd om zit. De min baan aan beide zijden van de connector moet wel kloppen! Het schema voor de plaatsing van deze VIA krijgt iedereen die een Z80-CP/M kaart besteld heeft bij de bouwhandleiding. Het schema wat in de grote handleiding staat is inmiddels achterhaald omdat het niet op de plaats #BCOO staat. Succes met het nabouwen, en veel plezier met de DOS EPROM.

Namens de hardwarecommissie: Yvo Tuk.

PAG. 18 ATOM NIEUWS SELECTIE EXXX EPROM Yv TUK

74LS40

U kunt in het ATOM schema kijken op welk IC deze 74LS40 het best geplaatst kan worden als "piggy pack”, zodat U de adreslijnen bij de hand hebt.

Opbouw extra voet op IC-voet 24 van het ATOM-moeder- bord (figuur 2) EPROM voor het HAXXX blok, of Hier zat nog een ver- b À Opgesoldeerde, binding mssende _ Íe monitor ROM socket met gedraaide twee rijen van de GHFXXX) contacten socket, deze is weg- geknipt om de EPROM nog te kun-

nen programmeren.

FDC NAAR #BC48 YvO TUK ATOM NIEUWS PAG, 17

Verplaatsing van de FDC naar #BC48

Naar aanleiding van het feit dat het artikel over de verplaatsing van de FDC volgens een nieuwe norm van de Hardwarecommissie op vreemde wijze is verdwenen hierbij nogmaals een artikel over deze verplaatsing. De verplaatsing komt eigenlijk neer op de manier zoals Nico Stad deze besproken heeft in een voorgaand AN. In deze verplaatsing zat echter nog een klein foutje, want de FDC stond plotseling in ieder blok na het blok #BCXX. Dus nog een opvolgende wijziging…… De methode is vrij simpel; er dient zowel in de Atom als in de FDC wat gewijzigd te worden. Deze wijzigingen zijn te zien in bijgaande figuren, Een korte bespreking van deze figuren: Figuur 1 & Figuur 2: Het wijzigen van de FDC, aan de componentenzijde, en aan de soldeerzijde. Figuur 3 & Figuur 4: Het wijzigen van het Atom moederbord aan de componenten- en soldeerzijde. De motivatie voor de verplaatsing van deze FDC mag wel duidelijk zijn lijkt mij, het hele /O gebeuren hoort nu eenmaal thuis in het #BXXX blok, en de geijkte plaats hiervoor is het blokje VO (FDC's). De exacte plaats #BC48 werd gekozen om practische redenen. De Hardwarecommiússie is het dus duidelijk niet eens met het plaatsen van de FPC naar het SEXXX blok; in dat blok hoort de software thuis. lemand met een uitgebreide DOS zou op het moment dat zo'n wijziging een norm zou worden niet meer mee kunnen met de normen… De DOS EPROM dient overigens ook gewijzigd te worden, het patch programma is te vinden op de clubschijf die bij het nummer van AN hoorde waar de wijziging van Nico Stad instond… Succes met het wijzigen!

Namens de hardwarecommissie: Yvo Tuk

PAG. 20 ATOM NIEUWS FDC NAAF #EC4B8 YVU TUE

Wijziging FDC naar #BC48-#BC4F

Figuur 3

Soldeerzijde ATOM-moederbord NN Hier dient het voormalige BLTKO

lijntje verbroken te worden….

Al deze pootjes uitbuigen

Tan Wijziging FDC naar #BC48-#BC4F

Figuur 1

EDC NAAR #BC48 Yvo TUK ATOM NIEUWS PAG» £1

Wijziging FDC naar #BC48-#BC4F

Figuur 4

vanaf poot 7 naar poot 31 van de 41612 connector….

Aan de soldeerzijde deze

Wijziging FDC naar #BC48-#BC4F

Figuur 2

PAG. #4 AFOM NIEUWS MIDI HANS VAN DER LINDEN

Qve: IDI

In reactie op het artikel over MIDI van Theo Waaijer in Atom Nieuws, jaargang 6, nummer 1, en de daarin gestelde vragen doe ik hierbij een poging enkele feiten over MIDI op papier te zetten, en tevens iets van mijn eigen belangstelling voor de combinatie computertmuziek over te brengen. Ik hoop hiermee diegenen die niet met het begrip MIDI vertrouwd zijn zover bij te scholen dat ze eventuele toekomstige verhandelingen of discussies hierover kunnen volgen. Helaas heb ik zelf geen ervaring met het gebruik van MIDI of epparatuur die van een MIDI-aansluiting voorzien is, dus de volgende informatie is uit publikaties afkomstig en niet in de praktijk geverifieerd.

Allereerst iets over de naam MIDI: dit is volgens mijn informatie een afkorting van Musical Instrument Digital Interface, en niet Musical Integrated Digital Interface zoals Theo Waaijer meende te hebben begrepen. Voor de rest van het verhaal is dit natuurlijk van generlei belang.

Wat is MIDI?

MIDI is een gestandaardiseerd interface om elektronische muziekinstrumenten met elkaar te verbinden. Via MIDI kunnen “muziek-data" van het ene instrument naar het andere getransporteerd worden. Waarom zou je zoiets willen? Omdat het zo eenvoudig mogelijk is om bv, met een enkel keyboard meerdere synthesizers tegelijk te bespelen, en bv. muziek die live gespeeld wordt in een sequencer op te slaan en later weer in dezelfde of een andere vorm opnieuw te laten horen. Deze mogelijkheden kwamen pas ter beschikking met de grootschalige invoering van de digitale muziekinstrumenten en de fabrikanten van deze instrumenten besloten (volgens mijn informatie in 1983) tot de invoering van een interface-standaard: MIDI. Daardoor zijn apparaten van verschillende merken, mits voorzien van een MIDI aansluiting, in principe zonder problemen met elkaar te koppelen,

Het MIDI interface transporteert "muziek-data” in principe slechts in een richting, nl. van de MIDI zender naar de MIDI ontvanger. Bidirectioneel datatransport is via MID[ alleen mogelijk door tussen twee apparaten ook twee MIDI verbindingen te maken. Dit is in sommige gevallen wenselijk maar in de meeste gevallen nauwelijks zinvol.

Zoale ik zojuist al opmerkte is er bij MIDI sprake van een zender en een ontvanger. De zender zendt informatie, bv. ingevoerd via een keyboard (een "orgel-manuaal"), in de door MIDI voorgeschreven vorm naar de aangesloten ontvanger(s). Deze informatie vertelt de ontvanger(s) bijvoorbeeld dat er zojuist op het keyboard een G werd aangeslagen en een D werd

MIDI

HANS VAN DER LINDEN ATOM NIEUWS PAG. 25

losgelaten. Ook kan op deze wijze een ander geluid geselecteerd worden (nieuwe programmakeuze).

Elke ontvanger ontvangt de MIDI informatie, zendt die (eventueel) door naar de volgende ontvanger, selecteert de voor hem bestemde informatie en voert de via MIDI ontvangen instructie uit. Dit kan bijvoorbeeld inhouden dat er een G ten gehore wordt gebracht en het klinken van een D wordt beeindigd.

Er ís dus slechts een MIDI zender, die als “"Master-keyboard'" fungeert, en een of meer MIDI ontvangers die in de vorm van een keten aan de zender gekoppeld zijn, en het eigenlijke geluid produceren. Als Master kan een synthesizer(-keyboard) of een los keyboard worden gebruikt, maar ook een computer.

Het MIDI interface

Het MIDI interface is een asynchroon serieel interface. Daardoor kunnen de verbindingen met eenvoudige DIN kabels gemaakt worden. Het protocol lijkt op dat van het bekende RS5232 interface, maar de overdracht—snelheid is hoger. nl. 31250 Baud, om vertraging in de datacommunicatie zoveel mogelijk te beperken. Een byte wordt bij MIDI in de volgende vorm verzonden: 1 startbit, 8 databits, 1 stopbit. Er zijn twee soorten data, te weten statusbytes en databytes. Elk statusbyte wordt gevolgd door een daarbij passend aantal databytes. Een databyte heeft altijd als MSB een O0, een statusbyte als MSB altijd een 1.

Een apparaat dat voorzien ís van een MIDI interface kenmerkt zich door de aanwezigheid van S5-polige DIN connectors. Er zijn drie soorten MIDI aanstuitingen: MIDI OUT, MIDI IN en MIDI THRU. Een zender verstuurt zijn gegevens via MIDI OUT, een ontvanger ontvangt gegevens via MIDI IN en stuurt ze eventueel door via MIDI THRU. Niet alle apparaten hebben al deze aansluitingen; welke aansluitingen aanwezig zijn hangt af van de mogelijkheden die het apparaat biedt. Een Expander (=synthesizer zonder toetsenbord) heeft bv. geen MIDI OUT want hij kan niet als zender functioneren.

Hoe werkt MIDI?

Welke gegevens worden eigenlijk via MIDI verstuurd? Dat zijn onder andere gegevens over:

= toonhoogte, toonduur aanslagdynamiek

programmakeuze

pitch bend (toonhoogte modulatie)

—'kanaalkeuze (16 verschillende kanalen aanwezig}

= etc. MIDI kent 16 verschillende kanalen, die onafhankelijk van elkaar kunnen worden gebruikt. Het is hierdoor mogelijk maximaal 16 verschillende apparaten via een MIDI keten onafhankelijk van elkaar te bedienen. Hiervoor bestaan verschillende Modes:

PAG. 24 ATOM NIEUWS MIDI HANS VAN DER LINDEN

OMNI-Mode: Alle ontvangers negeren de kanaalinformatie en reageren op alle "muziek-data". De zender kent alle “muziek-data" toe aan kanaal 1. Er is in deze Mode dus eigenlijk maar 1 kanaal beschikbaar, en alle apparaten reageren op dezelfde informatie.

POLY-Mode: Alle ontvangers zijn ingesteld op een eigen kanaal en reageren alleen op data die via dat kanaal worden verstuurd. De zender zendt zijn informatie voor elke ontvanger op een apart kanaal. ledere ontvanger is dus apart aanspreekbaar.

MONO-Mode: Elke stem ín een ontvanger krijgt een eigen kanaal toebedeeld en reageert alleen op dat kanaal. Het is dus mogelijk verschillende geluiden uit een instrument tegelijkertijd en onafhankelijk van elkaar te gebruiken. Slechts enkele apparaten ondersteunen deze Mode.

Toepassinasmogelijkheden

Gewapend met deze kennis over MIDI kunnen we ons een beeld vormen over de toepassingsmogelijkheden van een combinatie van MIDI en de Atom. Het meest voor de hand liggend is het gebruik van de Atom als sequencer of als multi-track recorder. Ik zal proberen uit te leggen wat hiermee wordt bedoeld.

Wanneer je als musicus een muziekstuk bedoeld voor meerdere musici in je eentje wilt spelen kom je natuurlijk handen tekort. Dit probleem kun je oplossen door de verschillende partijen na elkaar te spelen en op te nemen, bijvoorbeeld met een bandrecorder. Wanneer je echter elektronische instrumenten met MIDI interfaces gebruikt kun je de verschillende partijen ook via MIDI opnemen en wel in een computer, die daarvoor van een geschikt programma voorzien moet zijn, Deze combinatie noemt men ook wel een sequencer of een multi-track recorder, afhankelijk van de wijze van bedienen. Je kunt namelijk de muziek niet slechts live (in real-time dus) spelen en opnemen, maar ook stap voor stap via keyboard of computer-toetsenbord invoeren, en zelfs naderhand wijzigen.

Een dergelijk computerprogramma zou bv. moeten voorzien in 16 kanalen die onafhankelijk beluisterd en geprogrammeerd kunnen worden, zowel in real-time als stap voor stap, en ieder aan een eigen MIDI kanaal zijn te koppelen. Het dient ook mogelijk te zijn de weergavesnelheid te varieren. Het zou verder nuttig zijn als het programma MIDI informatie in notenschrift zou Kunnen omzetten (en omgekeerd) zodat een muziekstuk via een printer in notenschrift op papier kan worden gezet.

De precieze eisen waaraan zo'n programma dient te voldoen zijn natuurlijk niet zomaar even snel op te schrijven. maar moeten zorgvuldig overwogen worden. Overigens bestaan dergelijke programma's al voor enkele home- en personal

MIDI HANS VAN DER LINDEN ATOM NIEUWS PAG. 29

computers, o.a. voor de Commodore 64. Aan de technische haalbaarheid (voldoende geheugen, snel genoeg?) hoeft dus niet te worden getwijfeld. Het schrijven van zo'n programma zal echter waarschijnlijk geen peuleschil zijn en heel wat man- en/of vrouw-uren vergen.

Conclusie

Voor mensen die met elektronische muziekinstrumenten werken of dit van plan zijn is MIDI een schitterende uitvinding. De meeste apparaten op dit gebied zijn dan ook standaard van een MIDI interface voorzien. Helaas zijn deze apparaten meestal ook (schrikbarend) duur (enkele duizenden guldens). en dus voor hobbyisten minder interessant.

Daar staat echter tegenover dat het bouwen van een MIDI interface voor de Atom betrekkelijk goedkoop kan blijven, zeker ais het gecombineerd kan worden met een universeel serieel interface (RS232, RS5423). Op dit gebied zijn er dus geen grote beperkingen.

Of MIDI voor de (gemiddelde) Atom gebruiker van enig nut kan zijn waag ik te betwijfelen. Het eindoordeel hierover laat ik echter graag over aan U, geachte lezer.

Hans van der Linden Ketelstraat 10

6562 LH Groesbeek tel. OB891-1336

FALL. 26 ATOM NIEUWS ZEESLAG KLAAS YPMA

ZEESLAG TEGEN DE COMPUTER

Al minstens anderhalf jaar geleden ben ik op het idee gekomen om een programma te schrijven waardoor het lijkt of de computer even intelligent (of juist nog intelligenter) reageert als de mens. Een achaakprogremma is hiervan een goed voorbeeld. Omdat ik dat echter veel te ingewikkeld vond, ben ik naar een eenvoudiger vorm gaan zoeken. Dit werd het spel zeestag

Het leuke van het programma was dat de intelligentie steeds kon worden uitgebreidt. De eerste programma versie was zeer simpel van opzet. De computer verloor door het slechte spel ruimschoots