Philips P800


Hallo allemaal
Zoals eerder gezegd, heb ik de basis van een P800 simulator geschreven. Nu ben ik nooit P800/PTS Assembler programmeur geweest, en heb dus alles uit handboeken. Ik heb een aantal testprogrammas gevonden in handboeken, en die worden in ieder geval korrekt geassembleerd. Ik heb wat meer moeite met alles wat met CIO samenhangt, omdat externe eenheiden gesimuleerd moeten worden door lokale bestanden op de PC, bv cassette en floppy, om maar niet te spreken van harddisks.
Is er iemand in deze groep die hiermee kan helpen ? Anders wordt het projekt een eeuwigheids projekt, en ik wil het graag zo goed mogelijk doen zodat anderen er ook plezien van kunnen krijgen.
Alles is geschreven in Delphi 6.
Hier beneden staat een kleine routine die een REWIND van een cassette simuleert. Is nog niet getest, maar het laat zien hoe makkelijk Delphi is.

/Nico

function cas_rewind(j : integer) : integer;
var
psw : integer;
driveno : string;
begin
// when rewinding a cassette, there is no need to write any data.
// the record pointer can be cleared, the status bit saying "BOT"
// must be set *)
driveno := inttostr(j);
psw := 0;
if not fileexists(data_dir + 'CASDATA.' + driveno) then
psw := psw OR $0001 (* bit 15 - not operable *)
else
begin
cas_pos[j] := 0;
psw := psw OR $0400; (* bit 05 - BOT found *)
end;
cas_rewind := psw;
end;

De sourcetekst van zojuist is niet zoals die op het scherm staat. Spaties aan het begin van de lijn worden verwijdert.
/Nico

[Bericht gewijzigd door nico_dk op 18 oktober 2018 09:27:39 (73%)]

maartenbakker

Golden Member

Je kunt er [ code] en [ /code] zonder de spaties omheen zetten om de layout te bewaren.

[Bericht gewijzigd door maartenbakker op 18 oktober 2018 12:44:22 (14%)]

"The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Probeer het nog een keer

Goed, Preview laat het korrekt zien.

code:

function cas_read(j : integer) : integer;
var
   driveno : string;
   casfile : file of char;
begin
   driveno := inttostr(j);
   psw := 0;
   if not fileexists(data_dir + 'CASDATA.' + driveno) then
      psw := psw or 1;                  (* bit 15 - not operable *)
   (* the easiest way to handle a READ command, is to read the whole file     *)
   (* when cas_pos = 0. wafterwards we can read a block from cas_block[j]     *)
   if cas_pos[j] = 0 then
   begin
      assignfile(casfile,data_dir + 'CASDATA.' + driveno);
      reset(casfile);
      cas_max[j] := 0;
      (* need to handle tapemarks ! *)
      while not eof(casfile) do
      begin
         blockread(casfile,cas_block[j,cas_max[j]],1);
         cas_max[j] := cas_max[j] + 1;  (* number of records in file *)
      end;
      closefile(casfile);
   end;
   (* now read the first block *)
   cas_read := psw;
end;

/code]

Nu iets heel anders. Ik heb een uitdaging met de CIO instruktie, en hetzelfde zal ook wel voor andere I/O instrukties gelden
.
In het Assembler handboek, pagina 1.137, staat dat bit 10..15 de device aangeven. Er staat op 1.138 dat bit 10 en 11 de drive aangeven, en bit 12..15 het adres. Dit vat ik op als het adres van de adapter waar de floppy drive(s) op zit(ten).

MAAR, omdat er maar 4 bits zijn, kan het adres (van de adapter) niet hoger zijn als /0F. Of heb ik iets verkeerd begrepen ?

Ik meen me te herinneren dat adres /00../0F gereserveerd was voor Programmed Channel. Of is dat misschien iets speciaals voor PTS ?
( Excuses voor m'n Hollands, ik ben al bijna 50 jaar in DK *)
/Nico

Heeft iemand de ordercodes (?) voor de DCR? Er ontbreekt een pagina in m'n handboek, en ik kan de code voor SEARCH TAPEMARK FORWARD niet afleiden van de andere codes. Nu kan ik wel wat verzinnen, maar ik wil het graag autentiek houden. En nee, het is niet identiek met wat er voor de MT gebruikt wordt :-)

Zijn er hier meer programmeurs, of zijn het "slechts" produktiemensen en verzamelaars ?

/nico

maartenbakker

Golden Member

Ik ben hobbyprogrammeur (begonnen met zelf leren, daarna wel formeel opgeleid in wat moderne talen en assembly, maar nu al jaren weinig mee gedaan) dus ik kan ongeveer volgen waar het over gaat maar ik vrees niet dat ik echt een bijdrage kan leveren zonder grote investering van tijd die ik niet heb, hoe jammer ik dat ook vind :( Ik hoop dat Proxxima er wat meer mee kan, maar die is niet zo vaak op het forum.

[Bericht gewijzigd door maartenbakker op 19 oktober 2018 16:49:54 (11%)]

"The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Jammer, Maarten. Ik had gehoopt dat er hier een assembler programmeur was met P800 ervaring.
Ik heb overigens wat meer nagedacht over de bestanden die ik onlangs gekonverteerd heb. Iemand vond het merkwaardig dat de data die je kon zien, van verschillende PHilips fabrieken zou komen, die eigenlijk niets met elkaar te maken hadden. Nu heb ik de geredde bestanden niet zo goed bekeken op inhoud, maar zou de oplossing kunnen zijn dat de ene fabriek het systeem niet meer nodig had, en het dan doorgeschoven heeft naar een andere? Als je de bestanden wist, is het in elk geval in PTS zo, dat je alleen maar de bestandsnamen wijzigt (/ffff in het begin), en hetzelfde met de User-id. De data op de schijf blijft dus gewoon liggen, en als je dan een dump neemt, kun je alles netjez zien totdat er overschrijving plaatsvindt.
Just my 2 cents..
/Nico

guidob

Overleden

Op 18 oktober 2018 15:16:09 schreef nico_dk:

In het Assembler handboek, pagina 1.137, staat dat bit 10..15 de device aangeven. Er staat op 1.138 dat bit 10 en 11 de drive aangeven, en bit 12..15 het adres. Dit vat ik op als het adres van de adapter waar de floppy drive(s) op zit(ten).

MAAR, omdat er maar 4 bits zijn, kan het adres (van de adapter) niet hoger zijn als /0F. Of heb ik iets verkeerd begrepen ?
/Nico

Zou kunnen dat de vier bits gebruikt worden bovenop een vast adres? Dus FD zitten op A000 en hoger (random voorbeeld) en met de 4 bits kan je er dan een specifieke drive selecteren, A000, A001 etc. Zo ook voor andere zaken.

Een beetje als I2C chips die ook op een vaste reeks adressen zitten, waarbij je met wat pinnen het precieze adres kan kiezen. Maar een idee.

Het klopt dat de floppy controller maar 4 adres bits heeft. Hij beslaat echter wel 4 adressen in het IO gebied. Normaal gesproken staat de floppy controller in P800 systemen op adres /01 en beslaat dus de adressen /01, /11, /21, en /31 .
Voor gebruik onder IOP dient men dus ook een IOP te hebben die in deze adres range ligt.
De P858 system waren normaal uitgevoerd met een CP7R cpu bord. Op dit bord was ook een IOP geïntegreerd en deze lag vast op de adres range /00 tot /0F.

Tenminste dit is wat ik mij zo nog kan herinneren van deze system. Heb in grijze verleden ook nog wat assembly gedaan voor deze systemen maar eigenlijk te weinig om daar nu nog een goed beeld van te hebben.

Ook een DCR heb ik nooit gezien of onderhouden dus ook hier kan ik je niet bij helpen.

Beste mensen,

ope mijn FTP site ftp://ftp.dreesen.ch/P854 vind je nu de field support manual van de op dit system gebruikte P857EB CPU kaart. Deze CPU is zowel op de P854 als de PTS6925 gebruikt.

Met dank aan Camiel Vanderhoeven voor scannen & het ter beschikking stellen van deze dokumentatie.

Jos

Vandaag heb ik een FRCP paneeltje op mogen halen. -Blij mee-

Als tegenprestatie vond ik een fles wijn wel op zijn plaats :-)

Gefeliciteerd, Proxxima. Een ongelofelijke vondst.

Heeft iemand er een idee over hoe de P800 serie omging met Floating Point? Ik wil mijn simulator graat zo kompleet mogelijk hebben.
Ik ben nu bezig met het simuleren van de meeste eenheden als disk bestanden, maar het is de bedoeling dat ik relevante eenheden zoals tape punch, kortlezer en teletype ga laten draaien via de COM porten, maar dat zal nog wel even duren.

IK heb ook een vreemd idee om een FRCP panel te gebruiken als een hex rekenmachine :-))

Groeten
Nico

"Enige" tijd geleden was ik programmeur bij Philips (toen nog Semiconductors) in Nijmegen. We gebruikten o.a. P857 met MAS voor productiebesturing in de chipsfrabriek (voor de liefhebbers: in gebouw AN). Programmeren deden we in RTL/2 en assembler (geen idee meer hoe, te lang geleden).
Ik ben op zoek naar een P857. Is er iemand die een hint of een link heeft?

Het deense IT museum, waar ik de PHilips 'projektleider' ben, heeft verschillende P857 reservedelen, maar ik denk dat alleen de CPU kaart en misschien memory voor jou bruikbaar zou zijn. De andere delen horen bij de PTS serie. Ik zal wel eens nakijken. Zoek je een kompleet system of wil je iets gaan opbouwen?

Dag Nico, dank voor je snelle reactie. Ik zoek een complete P857, te gebruiken voor het ouderwetse programmeerwerk.

Als het interesse heeft, heb ik een Philips Assembler/Editor die op Windows draait. Geprogrammeerd in Delphi. De object bestanden die ik er uit krijg, zijn gelijk aan wat ik in bv. PTS dokumentatie kan vinden. Ik simuleer natuurlijk diverse eenheden; bv wordt een cassette bestand naar disk geschreven. Misschien makkelijker als we naar gewone mails overgaan ? Adres is nico@farumdata.dk
De aangehechtte PDF laat een paar screenshots zien

/Nico

Hoeben

Special Member

@Nico: sympathiek aanbod. Het gaat me echter ook om het apparaat zelf: de schakelaars en de registerlampjes blijven fascineren.
Vandaar dat ik op zoek ben naar een originele werkende P857.

Att. Hoeben : Ja, het is eigen ontwikkeling, en het zou me verheugen als anderen er iets aan hadden. Zowel de Assembler als de Simulator zijn nog steeds onder ontwikkeling, dus iedere hulp zou gewaardeerd worden./Nico

Hoeben

Special Member

Op 22 december 2018 14:44:44 schreef nico_dk:
Att. Hoeben : Ja, het is eigen ontwikkeling, en het zou me verheugen als anderen er iets aan hadden. Zowel de Assembler als de Simulator zijn nog steeds onder ontwikkeling, dus iedere hulp zou gewaardeerd worden./Nico

Misschien hier bij CO publiceren?

Dat zou ik leuk vinden. Maar hoe zou ik dat moeten doen? Gewoon maar de hele map ZIPpen en dan hier uploaden? downloaden via mijn FTP site is natuurlijk ook mogelijk. Dan kan ik daar altijd de meest recente stabile versie publiceren. Alles is geprogrammeerd inDelphi 6. Zou dat vandaag abandonware zijn? Ik houd me aanbevolen voor goede tips
/Nico

Misschien een Github project er van maken?

Eindelijk tijd gevonden dat ding eens onder stroom te zetten...
Enkele opmerkingen :

- In de 230V kant van de powersupply zitten een van die beruchte RIFA-kondensatoren : weghalen, want het is zeker dat deze ooit in de fik vliegen.

- De kist heeft absoluut active koeling nodig, 2 12 cm ventilatoren schijnen afdoende te zijn.

- Voor de gelukking bezitters van een FRCP module : het systeem heeft niet voldoende power op de 12V lijn om de FRCP te laten starten! Merkwaardig genoeg is het voldoende om even extern 12V aan te leggen, na het opstarten van de FRCP module is blijft de +12V lijn stabiel. Het lijkt wel op het opstarten van een auto met een 2de akku...
Ik vermoed dat dit aan de DC/DC konverter ligt, die tussen rack en P854 CPU board op de mezzazine board verbouwd is.

Eens gestart schijnt de FRCP module / de P854 CPU het te doen. Volgende stap is effectief software uploaden.

Jos

Hoi Jos,

Mooi werk! Leuk ook met dat paneel eraan.
Ik ben heel benieuwd hoe bruikbaar het geheel
uiteindelijk zal blijken te zijn.

Ik heb mijn systeem nog niet aangeroerd. Want volgens mij
zitten niet alleen in het systeem maar ook in de FDD en HD
van die voedingen met Rifa's...

Zodra ik het compleet heb met HDD controller dan ga ik er aan beginnen.
Ik ben benieuwd of er uiteindelijk vanaf de HD ook een
bootdiskette aangemaakt kan worden.