home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol235 / basicode.doc < prev    next >
Encoding:
Text File  |  1986-02-13  |  14.9 KB  |  463 lines

  1.  
  2.  
  3.  
  4.                        De NOS BASICODE voor CP/M systemen.
  5.                        ==================================
  6.  
  7.                                              Albert van der Horst
  8.                                              Henk Wevers
  9.                                              april 1983
  10.  
  11.  
  12.         Achtereenvolgens zullen we in deze gebruiksaanwijzing de volgende 
  13.         punten behandelen:
  14.  
  15.         1.   Hoe gebruik ik de programma's.
  16.         2.   Hoe pas ik de programma's aan voor mijn systeem.
  17.  
  18.  
  19.  
  20.         De  BASICODE  programmatuur  voor CP/M systemen  bestaat  uit  de 
  21.         volgende programma's:
  22.  
  23.         - BCREAD  .COM
  24.         - BCWRITE .COM
  25.         - BCTEST  .COM
  26.         - CONVERT .COM
  27.         - BC2     .BAS
  28.  
  29.         Bovenstaande  programma's zijn voor het daadwerkelijk gebruik van 
  30.         BASICODE.
  31.  
  32.         Op  de  bij  de  CP/M gebruikersgroep  van  de  HCC  verkrijgbare 
  33.         diskette staan ook nog de programma's
  34.  
  35.         - BCREAD  .ASM
  36.         - BCWRITE .ASM
  37.         - BCTEST  .ASM
  38.         - CONVERT .BAS
  39.  
  40.         Deze programma's zijn bedoeld om de programmatuur aan tev  passen 
  41.         aan  een  specifiek CP/M systeem.  We verwachten dat  binnen  een 
  42.         gebruikersgroep voor de meeste systemen deze aanpassing snel voor 
  43.         elkaar  zal  zijn,  zodat voor de meeste computers kant en  klare 
  44.         programmatuur beschikbaar zal zijn.
  45.  
  46.         Naast  deze  programmatuur is er nog een  vrij  eenvoudig  stukje 
  47.         hardware  nodig  om een casetterecorder op uw computer te  kunnen 
  48.         aansluiten. Daarover later meer.
  49.  
  50.         In  ieder geval dient U voor het gebruik van BASICODE onder  CP/M 
  51.         te   beschikken   over   een  CP/M  computer   met   minimaal   1 
  52.         parallelpoort.   Vooor  dit  laatste  is  een  parallel   printer 
  53.         aansluiting (b.v. Centronix type) bruikbaar.
  54.         Tevens  is  een  BASIC  interpreter van  bij  voorkeur  Microsoft 
  55.         noodzakelijk (MBASIC).
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                              Het werken met BASICODE
  71.  
  72.         Het lezen.
  73.         ---------
  74.  
  75.         - Sluit de casseterecorder via de speciale interface aan.
  76.         - Tik BCREAD filenaam.bas
  77.         - Start de recorder zodra dat wordt aangegeven
  78.         - Stop de recorder zodra dat wordt aangegeven
  79.  
  80.         Het BASICODEprogramma staat nu op de diskette als een z.g. ASCII-
  81.         file. 
  82.  
  83.         Het  lezen  van de cassette kan zowel bij lezen  als  bij  testen 
  84.         onderbroken  worden,  door een willekeurige toets in te  drukken, 
  85.         maar alleen als de recorder stil staat. 
  86.  
  87.         We  moeten  nu het programma geschikt maken voor BASICODE  II  en 
  88.         voor  de  Basicinterpreter.  Deze laatste vraagt  spaties  om  de 
  89.         sleutelwoorden,  terwijl  dit  niet  is  geeist  in  de  BASICODE 
  90.         standaard.
  91.  
  92.         - Tik CONVERTEER filenaam    (dus zonder .BAS !)
  93.  
  94.         Het  programma wordt nu van spaties voorzien zoals op het  scherm 
  95.         zichtbaar  is.  Het  gewijzigde programma staat nu onder de  naam 
  96.         FILENAAM.BAS op de diskette, het orginele programma onder de naam 
  97.         FILENAAM.BAK.
  98.  
  99.         - Start nu de BASIC interpreter met b.v.  MBASIC
  100.  
  101.         - Tik LOAD "FILENAAM" (de file wordt geladen)
  102.         - Tik MERGE "BC2"     (BASICODE2 wordt geladen"
  103.  
  104.         U  kunt het programma nu starten met RUN en/of eventueel naar  de 
  105.         diskette  wegschrijven.  Na  dit wegschrijven  is  het  programma 
  106.         zonder enig probleem uitvoerbaar met b.v. MBASIC FILENAAM
  107.              
  108.  
  109.         Het wegschrijven van een programma naar de casetterecorder
  110.         ----------------------------------------------------------
  111.  
  112.         - Sluit de cassetterecorder aan via de speciale interface
  113.         - Zorg dat het weg te schrijven programma geen regelnummers
  114.           onder de 1000 meer heeft, eventueel voor het saven onder
  115.           basic eerst DELETEn !
  116.         - Start de recorder
  117.         - Tik BCWRITE filenaam.bas
  118.         - Stop de recorder zodra de prompt (A>) zichtbaar wordt.
  119.         - Let erop dat BASICprogramma's weggeschreven moeten zijn met de 
  120.           A (ASCII) optie !
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.         Het aanpassen van de programmatuur
  137.         ---------------------------------
  138.  
  139.         De  file BC2.BAS bevat de routines voor het BASICODEII  protocol. 
  140.         Deze  file moet als een ASCII-file op de diskette  staan,  anders 
  141.         kunnen  we  de  regels niet mergen.  Eventueel  na  wijzigen  dus 
  142.         wegschrijven met SAVE "FILENAAM",A.
  143.  
  144.         Deze  routines  moeten  worden  aangepast  voor  wat  betreft  de 
  145.         cursorbesturing, screenclear, en het ophalen van de cursorpositie 
  146.         voor de terminal die U gebruikt.
  147.         De betreffende regels zijn:
  148.  
  149.         100 - 110 screenclear
  150.         110 - 120 cursorbesturing (HO en VE bevatten de positie, 0,0 is
  151.                   linksboven)
  152.         120 - 130 ophalen van de cursorpositie in HO en VE
  153.  
  154.         Mocht  Uw  terminal  niet in staat zijn de  cursorpositie  op  te 
  155.         halen, wijzig dan deze regels in:
  156.  
  157.         120 IF HO > (uw regellengte) THEN HO = (uw regellengte)
  158.         121 IF VE > (uw aantal regels) THEN VE = (uw aantal regels)
  159.         122 RETURN
  160.  
  161.         De overige regels kunt U voor MBASIC zo overnemen.
  162.  
  163.  
  164.         Aanpassing van BCREAD en BCWRITE en BCTEST
  165.         ------------------------------------------
  166.  
  167.         Hiervoor  hebt  U  de assemblerfiles nodig en de  standaard  CP/M 
  168.         assembler  ASM.COM.  Voor wat betreft de timing van  het  geheel, 
  169.         hier  dient  U enigszins te  experimenteren.  De  aanlooppieptoon 
  170.         heeft een bepaalde lengte,  probeer die zo nauwkeurig mogelijk te 
  171.         realiseren.
  172.  
  173.         BCTEST
  174.         -----
  175.  
  176.         Voor het testen van een tape is er het programma BCTEST.COM.
  177.  
  178.         Dit is heel simpel:
  179.  
  180.         - type UCTEST en start de cassette
  181.  
  182.         Nu verschijnt er een beeld als volgt op het scherm:
  183.                         *                    *
  184.  
  185.                        *                      *
  186.  
  187.         Wanneer  de linkse en rechtse sterren mooi onder elkaar staan  en 
  188.         het  goed te zien is welke bij welke hoort dan komt de band  goed 
  189.         door. Ze mogen wel iets op en neer gaan, maar van elke ster dient 
  190.         duidelijk te zijn aan welke kant hij hoort.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.         Uitleg:
  203.         De linkse sterren geven de lengte aan van de korte 2400 perioden, 
  204.         de rechtse van de lange 1200 perioden.  De onderste twee zijn van 
  205.         de  halve periode dat het signaal 0 is en de bovenste 2 horen bij 
  206.         5 volt signaal. 
  207.  
  208.  
  209.         Normaal  heeft een tekstfile onder CP/M zowel Carriage Return als 
  210.         Linefeed  tussen de regels staan.  Ten behoeve van BASICODE wordt 
  211.         hier de linefeed afgehaald bij schrijven en teruggezet bij lezen.  
  212.         Verder wordt,  wanneer de FIG optie aan staat er om de 64 charac-
  213.         ters een Carriage Return toegevoegd. Dit zal men alleen gebruiken 
  214.         bij  FIGFORTH schermen.  Bij het lezen met de FIG  opties  worden 
  215.         regels aangevuld tot 64 characters.
  216.  
  217.         BCREAD en BCWRITE
  218.         -----------------
  219.  
  220.         De  programmas  kunnen met de normale DIGITAL RESEARCH  assembler 
  221.         ASM  geassembleerd  worden.  Er is geen gebruik gemaakt  van  Z80 
  222.         codes.
  223.         De programmas zijn voldoende gedocumenteerd om modifikaties moge-
  224.         lijk  te  maken.  Het volgende is bedoeld om degenen  op  weg  te 
  225.         helpen  die wellicht geintimideerd worden door een assembler lis-
  226.         ting,  maar toch best in staat zijn om de eenvoudige  wijzigingen 
  227.         door te voeren voor hun eigen systeem.  Dit laatste vooropgesteld 
  228.         dat  er geen uitgebreidere modifikatie nodig zijn,  zoals bij  de 
  229.         Osborne het geval was.   
  230.         Met enig geluk is het voldoende de z.g. 'assembler switchen' om te
  231.         zetten. Bijvoorbeeld wordt door 
  232.  
  233.                 LET    OSBRN    0
  234.  
  235.         alles wat op de Osborne betrekking heeft uitgeschakeld.
  236.         Verder moet met 
  237.  
  238.                 LET     MEMMAP  0 i.p.v. 1 gezet worden
  239.  
  240.         wanneer  de  Centronics  poort op een I/O  poort  staat,  hetgeen 
  241.         normaal het geval zal zijn en moet met
  242.  
  243.         PAPORT  EQU     XXXX
  244.  
  245.         het poort adres ingesteld worden.  Dit laatste zal dus een  getal 
  246.         kleiner dan 256 zijn bij I/O poorten.
  247.         Op  dezelfde  manier  moet ook voor  'SCREEN'  een  geheugenadres 
  248.         ingevuld  worden,  dat  direct op het scherm te zien is (als  dit 
  249.         z.g. 'memory mapped video' aanwezig is)
  250.  
  251.         ------------- ALS HET MOEILIJK WORDT ----------------------
  252.  
  253.         Hieronder  volgen  enige opmerkingen om behulpzaam  te  zijn  bij 
  254.         verdere problemen.
  255.         Wanneer  er geen memory mapped video is,  zullen de verschillende 
  256.         handigheidjes  die laten zien wat er verstuurd wordt,  niet  snel 
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.         genoeg zijn en achterwege moeten blijven.
  269.  
  270.         Tijdens de testfase kan men, m.b.v. 
  271.  
  272.                 LET     DEBUG   1   
  273.  
  274.         meer informatie op het scherm krijgen.
  275.  
  276.         Dit  werkt  alleen bij memory mapped video en  niet  te  langzame 
  277.         processors.
  278.         Omdat  er met software loops getimed wordt,  zijn alle interrupts 
  279.         uitgeschakeld.  Bij  de Osborne betekent dit bijv.  dat  de  disk 
  280.         drive  niet  uitgeschakeld  wordt tijdens het schrijven  van  een  
  281.         cassette.  (Als  men dat vervelend vindt,  kan men met  schrijven 
  282.         wachten tot het diskdrive lampje uitgaat)
  283.         Bij andere computers moet wellicht,  telkens wanneer de  computer 
  284.         naar het toetsenbord moet kijken, de interrupts even ingeschakeld 
  285.         worden.
  286.         De  grenzen voor de vertragings loops zijn gebaseerd op 4MHz  Z80 
  287.         zonder  'wait  states'.  Men kan aan de trailer en  header,die  5 
  288.         seconden moeten duren,  de constante 'DEL24' controleren en even-
  289.         tueel  bijstellen.  In eerste instantie kan men dan voor  'DEL12' 
  290.         het dubbele van 'DEL24' nemen. Met een klein testprogrammatje die 
  291.         een vast aantal periodes schrijft (m.b.v.  BEEPV) kan men dit nog 
  292.         controleren. 
  293.         Bij  het  lezen is er alleen de constante 'CRIT',  die  de  grens 
  294.         aangeeft tussen wat als een 1 en wat als 0 beschouwd wordt.
  295.         Bij redelijke hardware blijkt deze vrij ongevoelig te zijn. 
  296.         'CRIT' kan men ook evenredig bijstellen. Een betere (en tijdrove-
  297.         nde ) procedure is: de grenzen bepalen waartussen 'CRIT' zich mag 
  298.         bewegen, en daar het midden van kiezen.
  299.         Bij  de UCTEST tenslotte kan men de horizontale schaal  eventueel 
  300.         halveren  of verdubbelen,  door arithmetische shifts in te voeren 
  301.         of weg te laten.
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.         BENODIGDE HARDWARE
  335.         ------------------
  336.  
  337.         De hardware is zeer simpel en bevat geen voeding. 
  338.         We  gaan  uit  van de aanwezigheid van een  Centronics  interface  
  339.         poort.   Deze bevat (o.a.) 8 bits data uitvoer naar de printer en 
  340.         1 bit invoer ( ready signaal ).   Deze worden  gebruikt,   zonder  
  341.         verdere  modifikatie   of aansturingscommando's.   Dit heeft  tot 
  342.         gevolg   dat  het  interface  voor alle CP/M  machines  hetzelfde  
  343.         kan   zijn.   De  pintelling zoals die in het  volgende  gebruikt 
  344.         wordt  is die van de 'normale' Centronics  connector  zoals   die  
  345.         b.v.  in de  Epson printers etc. wordt toegepast (36-polig Amphe-
  346.         nol)
  347.  
  348.          CENTRONICS                                                             
  349.                                                                                 
  350.                                                                                 
  351.           BIT 0   _________                              
  352.           _______|   1K    |_________                             
  353.              ->  |_________|         |                                                
  354.                                      |                                          
  355.           BIT 1   _________          |      _________       ->  CAS INPUT  
  356.           _______|   3K    |_________|_____|  5K6    |_________
  357.              ->  |_________|         |     |_________|   |                            
  358.                   (optioneel)        |                  ___                            
  359.                                      |                 |   |          
  360.                                   ------               |1K |          
  361.                                   ------  56nF         |   |          
  362.                                      |                 |   |          
  363.                                      |                  ---           
  364.                                      |                   |            
  365.           ___________________________|_________________________
  366.                                                             ->  CAS AARDE 
  367.  
  368.         De 3 Kohm weerstand wordt nu nog niet gebruikt,  maar is  bedoeld 
  369.         om  in de toekomst voor een golfvormverbetering te kunnen  zorgen 
  370.         door  2  bits te gebruiken.  Wellicht is dat niet  haalbaar  voor 
  371.         langzame processoren.
  372.                                                             
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.           PRINTER READY                      ________                
  402.           ___________________________ ______| 22 OHM |_________   
  403.              <-       |              |      |________|      <-  CAS LUID-
  404.                       |              |                          SPREKER
  405.                       | DUG          | ZENER 4.7V                            
  406.                     _____          ______                                       
  407.                       .              .  |                                       
  408.                      / \            / \                                         
  409.                     /   \          /   \
  410.                    /_____\        /_____\                                       
  411.                       |              |                                          
  412.                       |              |                                          
  413.           _____________________________________________________  CAS AARDE      
  414.                                                              <-                 
  415.  
  416.  
  417.         Men dient een stevig signaal toe te voeren aan dit interface. Dit 
  418.         is  geen probleem als men de luidsprekeruitgang gebruikt van  het 
  419.         soort  goedkope  cassette  recorders waar 4 1.5  Volt  cellen  in 
  420.         kunnen  (dus 6 Volt voeding ) De HiFi apparaten geven i.h.a. toch 
  421.         heel slechte resultaten als  opslagmedium !
  422.         Deze  apparaten hebben een ingebouwde opnamesterkteregeling,  dat 
  423.         is  ook een zorg minder.  Hoewel het test programma het  mogelijk 
  424.         maakt eens te bekijken wat het effekt van de regelknoppen is, kan 
  425.         men zonder meer de zaak op zijn hardst zetten.
  426.  
  427.         Voor de niet-elektronici:
  428.  
  429.         het  schema  bevat niets magisch en er gebeurt bijna  niets   Bij 
  430.         lezen  van de cassette wordt alleen de computer  beveiligd  tegen 
  431.         verkeerde  spanning  Bij schrijven wordt het signaal verzwakt  en 
  432.         de hoge tonen nog eens extra.
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.