Uit Hack42
Ga naar: navigatie, zoeken
Project: Univerele punchtape vertaler
Schroefje24.png
Schroefje24.png
Schroefje24.png
Schroefje24.png
Universal punchtaper Picture.jpg

Univerele punchtape vertaler

Naam Univerele punchtape vertaler
Door MacSimski, WitchDoc
Status Uitvoer
Madskillz python
Doel / Omschrijving
universele punchcode vertaler
Alle Projecten - Project Toevoegen
File:Universal punchtaper_Picture.jpg noez

Algemeen

ITA2, ASCII, BULL,Flexowriter,Typesetter. allemaal codes voor het aansturen van apparaten in de space. Van 5 tot 8 bits, controlcodes. Zou het niet handig zijn om een babelfish te hebben om deze machines allemaal vanuit een softwaredingus aan te sturen. Vanuit de computer naar apparaat en terug. Voor ITA2 en Typesetter is er al iets geschreven, maar dit combineren in een (uitbreidbare) stuk software/hardware combi is misschien handig.

Een van de dingen die door de software afgehandeld moet worden is het omschakelen tussen hoofd en kleine letters of getallen. in ascii zijn dat aparte karakters, is andere codes wordt daar een of twee aparte omschakelkarakters voor gebruikt die apart verzonden worden waarvan de staat onthouden moet worden voor de karakters die er op volgen.

Daarnaast is het nodig een vertaalslag te maken van karakters die niet in ascii of unicode voorkomen. hoe die te coderen in het bronbestand voor de vertaling.

Mocht de implementatie op een microcontroller gebeuren, is het ook handig om alle vertaalslagen in progmem in de controller te hebben, zodat met een paar gpio pinnetjes aan te geven is welke vertaling gewenst is. Maar ik vind het ook wel mooi om dat met controlcodes te doen, zodat ook tijdens gebruik omgeschakeld kan worden. Om het niet heel erg ingewikkeld te maken gaan vertalingen altijd van of naar ascii.

Dit project dient ook als een vehikkel om eens met python aan de slag te gaan, Aangezien ik de taal niet ken.

Structuur

Het project staat op Github.

Voor het opzetten van een vertaling naar een nieuw apparaat worden libreoffice calc .odf bestanden gebruikt. Met select_rows_from_odf.py wordt uit een geexporteerde .csv de nuttige kolommen gehaald voor gebruik in converter1_x.py. Die stuurt direct de seriele poort aan waar de puncher aanhangt.

Het script wordt aangeroepen met

  • $ python converter.py -i bronbestand.txt -f xxx -p <serialport>

waar xxx de vertaalslag is:

  • fb=flexowriter Bull
  • fp=flexo president
  • tsa=typesetter 6bit version a
  • tsb=typesetter version b
  • tx=ita2 telex
  • ba=banner (gaatjes vormen leesbare letters)

sowieso wordt de filenaam als leesbare banner vooraan de tape gepunched om archivering makkelijker te maken.

Voorstel voor control sequences

Een control sequence voor bijvoorbeeld omschakelen van vertaalmodus en non-ascii karakters kan hetzelfde van opbouw zijn, Herkenbaar aan twee opeenvolgende karakters die in normaal gebruik niet veel achter elkaar voorkomen, zoals:

  • <|
  • <-+
  • @@

Direct gevolgd door twee letters voor de gewenste functie op karakter. dat een non-ascii niet op alle doelapparaten voorkomt maakt het wel onoverzichtelijk, maar met een simpele tabel op de wiki is het altijd snel op te zoeken.

Dus bijvoorbeeld @@tf is target flexowriter, @@ts target typesetter, @@ti telex.

Een ander probleem is: hoe heten die rare non-ascii tekens: vierkantje met kruis, afgeplatte x. Daarvoor zouden we UTF-8 kunnen nemen, aleen zijn die 4 byte, wat dan door de software aan de ascii kant weer als garble tevoorschijn kan komen, en een lookuptable ook niet echt fraai maakt. andere oplossing is de escape karakters van een naar meerdere karakters en terug vertalen in python is niet echt een issue.

for the flexo SPD with bull coding:

strange char equivalent
stop read @@str
switch read @@swr
lowercase @@lcs
uppercase @@ucs
punch off @@pof
punch on @@pon

Dit maakt de brontekst niet echt direct porteerbaar naar andere systemen, maar met zoek en vervang is een hoop te doen.

Een uitdaging is het gebruik van accenten. sommige accenten of speciale tekens op de flexo bijvoorbeeld verplaatsen de wagen niet. Dat zou ook andersom moeten werken. komt er van een punchtape een accent teken terug, moet die dan samengevoegd worden met het opvolgende teken tot een extended ascii of juist niet en sequencieel in het doelbestand worden gezet?

Ook voor het gebruik van shift tekens moet nog een oplossing gevonden worden. zowel de friden flexowriters, als de telex maakt gebruik van een shiftstatus die bij dezelfde code twee verschillende tekens kan laten zien. Deze shiftstatus codes zijn bij alle aparaten anders en moeten makkelijk op een standaardmanier uit de lookuptable herleidbaar zijn. misschien zijn hier ook de @@codes voor te gebruiken.