Konference: Počítač SHARP MZ-800 a emulátory

Od: Michal Hučík
Datum: 19.10.2013 01:25
Předmět: Stare projekty (Unikarta)


Ahoj,

po par mesicich jsem se opet dostal k Unikarte. Chvili jsem blbnul s webserverem, ve kterem mi bezela aplikace pro spravu Unikarty, ale v zapeti jsem jej zavrhnul, protoze pameti nemame nazbyt. Proto jsem akorat priohnul stavajici USARTshell tak, aby jej bylo mozne prepnout  bud na RS232, nebo na TCP a  prejmenoval jsem jej na Ushell :)

Uz mam i jakousi ucelenejsi predstavu o tom jak by melo vypadat API.

Fyzicka vrstva je na sharpu dle meho nazoru zbytecna. Omezil bych se asi jen na funkci, ktera precte z registru ENC29J60 stav linky up/down.

Aplikacni vrstva - na tu tam nemame uz prilis mnoho pameti. Pokud nejaka bude nadbyvat, tak tam chci dat dns resolver a dhcp klient ... Kdyz se mi podari carovat s volnym mistem, tak treba i http a smtp klient, atp...

Samotne API pro praci se siti bude realizovano v duchu zjednodusenych BSD sockets. Bude mozne otevrit omezene mnozstvi UDP, nebo TCP socketu. Dale bude mozne otevrit anonymni socket, ktery bude naslouchat na urcenem TCP portu a umozni Sharpu zareagovat na prichozi TCP spojeni.

( U protokolu UDP neni v tuto chvili zadny anonymni listening mozny. Mam predstavu jak to tam dopsat, nicmene potrebuje nekdo psat serverovou UDP aplikaci?)

S otevrenym socketem bude mozne pracovat jako se souborem. Pri zapisu (odesilani packetu) jsme vsak limitovani pameti - Unikarta se musi starat i o retransmit v pripade nedoruceni packetu. K tomuto ucelu bude zrejme potreba vymyslet vice odesilacich rezimu, ktere budou odesilat data jak automaticky
po naplneni bufferu, tak i manualne - dle potreby. Nasledne si bude muset Sharp pockat na to az od protistrany prijde ACK - potvrzeni o prijeti packetu. Do te doby se nebude smet ze Sharpa na odesilaci buffer vubec sahat (pokud tedy pro konfort neobetujeme vice pameti tak, aby velikost bufferu prevysovala max velikost odesilaneho packetu).
Bude tam tedy muset existovat nejaky transportni semafor. K tomuto ucelu bude samozrejme fajn mit moznost naprogramovat si interrupt system v Unikarte tak, aby nas zatahal za rukav jakmile bude mit opet volno.
Mam uz i jakousi predstavu o tom, ze by jsme tam mohli mit nejaky dynamicky buffer, jehoz rozlozeni by si kazdy mohl nastavit dle vlastnich preferenci a ovlivnovat tak potom cinnost jednotlivych periferii. Jen aby z toho pak nevzniknula pouze komplikovana programatorska hricka :)

Dnes jsem tedy kroutil maticky a dotahoval sroubky na Ushellu. Zde je report z prenosu dat Unikarta (SD) -> PC :

# ./a.out tcp:192.168.167.80:23 read sdmgr_cpm.DSK /tmp/

Ostatní příspěvky vlákna:

 
[2013/1 (17)] [2013/2 (52)] [2013/3 (60)] [2013/4 (68)] [2013/5 (60)] [2013/6 (42)] [2013/7 (9)] [2013/8 (48)] [2013/9 (1)] [2013/10 (40)] [2013/11 (45)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]