Flash Gordon 274 Geplaatst 26 november 2017 Rapport Share Geplaatst 26 november 2017 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");} Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 26 november 2017 Rapport Share Geplaatst 26 november 2017 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! Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 26 november 2017 Auteur Rapport Share Geplaatst 26 november 2017 de eerste staat er al Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 26 november 2017 Rapport Share Geplaatst 26 november 2017 Print hello wereld naar de std out.m februit makend van de library waarin printf zich bevindt. Meestal dient dit stukje hello worrld om überhaupt te kunnen conpileren Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 26 november 2017 Auteur Rapport Share Geplaatst 26 november 2017 Nu mag jij een stukje code leveren Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 26 november 2017 Rapport Share Geplaatst 26 november 2017 Poeh da's LANG geleden. Even OS afhankelijk of althans laten we van n OS uitgaan dat of een vrij data segment aanbiedt dan wel geen restricties oplegt op de hieronder gebruikte memory range LD HL, $E000 LD DE, $E200 LD BC, 100 LDIR Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 26 november 2017 Auteur Rapport Share Geplaatst 26 november 2017 Verplaatst een datablok van 100 naar 200, van omvang E000, dacht ik? Moet LDIR anders nog opzoeken Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Verplaatst een datablok vanaf hex adres E000 naar hex adres E200, met een lengte van 100 (bytes) Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 27 november 2017 Auteur Rapport Share Geplaatst 27 november 2017 Damn, zat ik bijna goed. Ik ga even een grotere zoeken die ik ooit schreef voor een 80286 Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Deze vraag ik vaak als ik wil weten of collega's een taal (in mijn geval Java) ook snappen: int i = 5; int j = i++*++i; Wat staar er in j? Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Trikcy. Ik ben al zon' 14 jaar geen programmeeur meer. Ik gok op 6 * 5 oftewel 30. Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Nope, Hint: denk aan de assembly die gebruikt moet worden. Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Andere optie is, er van uitgaande dat JAva van rechts naar links parst: 6 * 6 oftewel 36 en dat nadien i op 7 staat? Of 7 * 5 = 35 Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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 Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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. Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 27 november 2017 Auteur Rapport Share Geplaatst 27 november 2017 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. Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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 Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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 Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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. Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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. Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 Wrap around? Ik dacht er nog even aan (serieus) Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 27 november 2017 Auteur Rapport Share Geplaatst 27 november 2017 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 Citeren Link naar bericht Deel via andere websites
MysticNetherlands 298 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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? Citeren Link naar bericht Deel via andere websites
Flash Gordon 274 Geplaatst 27 november 2017 Auteur Rapport Share Geplaatst 27 november 2017 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 Citeren Link naar bericht Deel via andere websites
Bonjour 80 Geplaatst 27 november 2017 Rapport Share Geplaatst 27 november 2017 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. Citeren Link naar bericht Deel via andere websites
Aanbevolen berichten
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.