Spring naar bijdragen
Flash Gordon

Voor oude (!!) programmeurs

Aanbevolen berichten

Vraag en antwoordspelketje, geen idee if het leuk wordt. Regels:

 

1. Je plaatst een stukje code

2. Iemand anders vertelt wat het doet. Indien juist mag je nieuwe code plaatsen.

Code moet zijn in Z80, 80x86, 6502, M68000, of C

Besturingssystemen mogen zijn: CP/M, NewDOS/80, MS/DOS

Extreem simpele start:

#include<stdio.h> main() { printf("Hello World");}

Deel dit bericht


Link naar bericht
Deel via andere websites
2 minuten geleden zei Flash Gordon:

Vraag en antwoordspelketje, geen idee if het leuk wordt. Regels:

 

1. Je plaatst een stukje code

2. Iemand anders vertelt wat het doet. Indien juist mag je nieuwe code plaatsen.

Code moet zijn in Z80, 80x86, 6502, M68000, of C

Besturingssystemen mogen zijn: CP/M, NewDOS/80, MS/DOS

Poeh da's lang geleden. Wel ervaring met de Z80 en de Hitachi versie ervan 64180. 6502 ook wat. Die andere 2 niet. C uiteraard wel. Kom maar op!

Deel dit bericht


Link naar bericht
Deel via andere websites

Links naar rechts parst.

Dus eerst left operand (i++) bepalen 5 (ophalen uit stack, in register zetten en 6 terugzetten)

Dan right operand (++i) bepalen 6 ophalen en ophogen naar 7, dat in register,  7 terugzetten

Vermenigvuldigen 5*7 -> 35

Deel dit bericht


Link naar bericht
Deel via andere websites
7 minuten geleden zei Bonjour:

Links naar rechts parst.

Dus eerst left operand (i++) bepalen 5 (ophalen uit stack, in register zetten en 6 terugzetten)

Dan right operand (++i) bepalen 6 ophalen en ophogen naar 7, dat in register,  7 terugzetten

Vermenigvuldigen 5*7 -> 35

Ha, die wist ik, uitgaande van C.

 

Java is van na mijn tijd :+

2 minuten geleden zei MysticNetherlands:

Oh ja :$ anyway, na bijna 15 jaar geen Java, C++, C, assembly etc te hebben aangeraakt, mag t ook wel :( Mis t soms wel hoor. Doe heel, h'e'el af en toe nog wat in EXcel/VBA, erg krachtig. Leuk om te doen.

Mijn laatste grote hobby-project was een anti-virusprogramma op mijn 286/MS-DOS systeem, volledig in assembly. De goede oude tijd. Jaar of 20, 25 geleden denk ik.

Deel dit bericht


Link naar bericht
Deel via andere websites

HAha, gaaf. Programmeren is cool. Vooral als je t solo doet (dus niet in een team). Ik ben lichtelijk contactgestoord dus t was eigenlijk t ideale beroep voor mij. Hoofdtelefoon op, hersenen kraken en voor de rest niets. En als je een mooie opelossing hebt verzonnen voor een probleem, dan is dat erg bevredigend haha

Deel dit bericht


Link naar bericht
Deel via andere websites

Ik weet niet meer of mijn c syntax helemaal correct is. Maar de essentie is wel correct. Deze heeft 2 antwoorden 1 voor de 68000 en 1voor 80286/msdos

int[] arr = new int[32769];

arr[0] = 5;

arr[32768] = 10;

printf(arr[0]);

Wat is de output? En waarom

Deel dit bericht


Link naar bericht
Deel via andere websites

Poeh, zal wel iets met byte vs word en little vs big endian te maken hebben,. Oorpsonkelijk zou ik gewoon "5" zeggen, maar daar t een trick question is.... hmmm... ik denk dat de 3e regel een red herring is, ik schat respectievelijk in dat op de 68000 een integer big endian 16 bytes is, dus 1280 en 5. Maar eerlijk gezegd kan ik me niet voorstellen dat t een trick question is. Ik zeg gewoon "5" toch.

Leuk topic trouwens. 

Deel dit bericht


Link naar bericht
Deel via andere websites
5 minuten geleden zei MysticNetherlands:

little vs big endian

Dat heb ik ook eens gedaan. Een byte dump gemaakt van een array integers en dan dat overzetten van de Atari 1040 naar een dos prullenbak. Alles verkeerd om.

Natuurlijk is het een trick question. Maar de klote trick zit net iets anders. Hint 32768 = 32k.

Deel dit bericht


Link naar bericht
Deel via andere websites
24 minuten geleden zei MysticNetherlands:

HAha, gaaf. Programmeren is cool. Vooral als je t solo doet (dus niet in een team). Ik ben lichtelijk contactgestoord dus t was eigenlijk t ideale beroep voor mij. Hoofdtelefoon op, hersenen kraken en voor de rest niets. En als je een mooie opelossing hebt verzonnen voor een probleem, dan is dat erg bevredigend haha

Ik ben blij dat ik nooit pro ben geworden, maar het beeld van de koude pizza, cola en teringherriemuziek en dan 24/7 coderen heb ik altijd wel romantisch gevonden ja

Deel dit bericht


Link naar bericht
Deel via andere websites
2 minuten geleden zei Flash Gordon:

Ik ben blij dat ik nooit pro ben geworden, maar het beeld van de koude pizza, cola en teringherriemuziek en dan 24/7 coderen heb ik altijd wel romantisch gevonden ja

Dude, brings back memories. Letterlijk met die pizza en cola haha. 

 

@Bonjour ik wacht in spanning op je antwoord :) wrap around?

Deel dit bericht


Link naar bericht
Deel via andere websites
25 minuten geleden zei Bonjour:

Ik weet niet meer of mijn c syntax helemaal correct is. Maar de essentie is wel correct. Deze heeft 2 antwoorden 1 voor de 68000 en 1voor 80286/msdos

int[] arr = new int[32769];

arr[0] = 5;

arr[32768] = 10;

printf(arr[0]);

Wat is de output? En waarom

De x86 kent datablokken van 64K, integers van 16 bits, dus een wrap op 32K en die heeft dus 10 als output. Denk ik

Deel dit bericht


Link naar bericht
Deel via andere websites
1 minuut geleden zei MysticNetherlands:

wrap around?

Yes wrap around.

32k = 64k bytes.

int[] arr heeft een 16 bits pointer voor de index p een 80286. arr[32768] is dus gelijk aan arr[0]. de 5 wordt dus overgeschreven met 10. Wellicht was het wel met een memory model te verhelpen, maar aangezien ik het voor mijn hobby deed en geen internet had, kwam ik er niet uit. Op de Atari 1040 ST was het geen probleem. die had een lineaire memory space van 1 MB. En zijn registers waren lang genoeg.

Deel dit bericht


Link naar bericht
Deel via andere websites

Maak een account aan of meld je aan om een opmerking te plaatsen

Je moet lid zijn om een opmerking achter te kunnen laten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden

×

Belangrijke informatie

We hebben cookies op je apparaat geplaatst om de werking van deze website te verbeteren. Je kunt je cookie-instellingen aanpassen. Anders nemen we aan dat je akkoord gaat. Lees ook onze Gebruiksvoorwaarden en Privacybeleid