k (Lurwah heeft pagina Universal punchtaper hernoemd naar Gebruiker:Hack42/Universal punchtaper) |
|
(geen verschil)
|
Huidige versie van 17 mei 2024 om 10:58
Project: Universele punchtape vertaler | |
---|---|
Naam | Universele punchtape vertaler |
Door | MacSimski, WitchDoc |
Status | Afgerond |
Madskillz | python, ponsband codes, computerhistorie |
Doel / Omschrijving | |
universele punchcode vertaler | |
Alle Projecten - Project Toevoegen |
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
- pt=geen conversie, alleen toegevoegde header en footer
- 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?
Uitvoering
voor een uitleg van de code is het handiger in de header van converter1_0.py te kijken.
files in de git repository:
file | wat |
---|---|
5x5font.jpeg | voorbeeld voor het headerfont |
ASCII1.GIF | ascii lookuptabel |
ASCIIcode.gif | punchcode |
converter1_0.py | feitelijk script |
flexowrcode.gif | code van een flexo (blijkt hetzelfde als de president te zijn |
friden_pres.csv | export van de ods |
friden_pres.ods | spreadsheet met lookuptable voor de Flexowriter President |
friden_spd.csv | export van de ods |
friden_spd.ods | spreadsheet met lookuptable voor de Flexowriter met Bull code |
ita2.csv | export van de ods |
ita2.ods | spreadsheet met lookuptable voor een 5bits telex |
Neue schrift.png | voorbeeld van een headerfont |
plaintext.csv | export van de ods |
plaintext.ods | lookup voor headerfont |
select_rows_from_odf.py | verouderd. wordt niet meer gebruikt |
testfile.txt | generieke tekst ter convertering |
tts-etaino-2048x2969-w.jpg | teletypesetter code (6bit) (nog niet geimplementeerd) |