Forums.ATC.no

Ano-Tech Computers => Minecraft => Emne startet av: Cybersyn på 21. Februar 2015, 01:44 am

Tittel: RedHack - en datamaskin av Redstone
Skrevet av: Cybersyn21. Februar 2015, 01:44 am
Jeg jobber foreløpig med å bygge en datamaskin av Redstone på kreativkartet, basert på Hack-arkitekturen beskrevet i boka The Elements of Computing Systems (http://www.nand2tetris.org/book.php) (du kan lese den viktigste halvdelen av boka her (http://nand2tetris.org/chapters/), men hvis du er interessert anbefaler jeg deg å skaffe hele boka).

Fremgang 05.03.2015:
(http://0o2471.net//61351.jpg) (http://0o2471.net/61351)

Hvis du vil hjelpe til eller bare se på, kan du skrive
Kode: [Velg]
/warp redhack.

Grensesnitt kontra implementering (http://forums.atc.no/index.php?topic=1860)

Status

2. Boolsk aritmetikk
3. Sekvensiell logikk
5. Dataarkitektur
overstrekk = allerede bygget
fet = bygges nå

Vi har rammet inn hver chip med rosa ull, og organisert dem i rekker etter kapittel.

I/O
Boka sier at brukeren kan kommunisere med datamaskinen ved hjelp av en skjerm. Skjermen er 512 piksler bred og 256 piksler høy, og hver piksel representeres av 1 bit (dvs. svart-hvit). Skjermen er tilordnet alt dataminne fra og med 0x4000 til og med 0x5FFF. Dessverre vil en slik skjerm i Minecraft være ganske krevende, og for det meste ubrukelig. I stedet for skjermen, tilordnes dette minnet general-purpose I/O. Dette kan brukes til å koble datamaskinen til helt vanlige redstone-kretser, som dører, dispensere, lamper, knapper og til og med andre datamaskiner.

Det vil fortsatt være mulig å ta i bruk tastaturet i 0x6000.

Programmering
Instruksene datamaskinen forstår er godt dokumentert her (http://www.nand2tetris.org/chapters/chapter%2004.pdf).

Det er også mulig å programmere datamaskinen i et språk kalt assembly, som er beskrevet her (http://www.nand2tetris.org/chapters/chapter%2006.pdf). Poenget med assembly er å oversette maskinspråk slik at det er lettere å forstå for mennesker, samtidig som det har et grensesnitt som ligner maskinspråket. Derfor er assembly en 1-til-1-oversettelse, og det kan oversettes til maskinspråk ved hjelp av en assembler.

Det finnes også en Jack-kompilator for Hack-arkitekturen. Jack er et programmeringsspråk som ligner på Java. Det er enda lettere å forstå for mennesker enn assembly, men det ligner mindre på maskinspråk. Kompilatoren oversetter Jack-kildekode til Hack-maskinkode. Jack er dessverre beskrevet i den delen av boka som ikke er gratis, men om noen ønsker det skal jeg prøve å forklare etter beste evne.

Assembleren og Jack-kompilatoren finner du her (http://www.nand2tetris.org/software.php) sammen med et program som lar deg kjøre Hack-maskinkode rett på PCen din og mange andre nyttige verktøy.

Det er verdt å merke seg at Redstone går for sakte til at datamaskinen kan gjøre noe særlig nytte for seg. Poenget med dette er ikke å gjøre det mulig å spille Minecraft på Minecraft, men å lære meg selv og (forhåpentligvis) andre hvordan datamaskiner virker og at det er mange likheter mellom Redstone og teknologien hverdagen vår er bygget på.

For å gi deg en liten idé om hvor treig den er: 10 ticks = 1 sekund. Adderen som brukes har en carry på 2 ticks. 16 slike skal kobles sammen, altså 32 ticks. Og det er bare adderen. Med multiplekserne kan det fort gå over 40 ticks per instruksjon. I den første modellen vil vi fokusere mest på størrelse, men vi planlegger å bygge en mindre kompakt modell med 0-ticks carry.
Tittel: Sv: En datamaskin bygget av Redstone
Skrevet av: Floyd-ATC21. Februar 2015, 08:29 am
Spennende prosjekt! :-D
Tittel: Sv: En datamaskin bygget av Redstone
Skrevet av: Cybersyn22. Februar 2015, 00:43 am
Det hadde vært kjekt om det var mulig å laste opp program til serveren uten å måtte klokke inn programmet byte for byte manuelt med spaker og knapper, men hvordan dette skulle foregå aner jeg ikke.
Tittel: Sv: En datamaskin bygget av Redstone
Skrevet av: Floyd-ATC22. Februar 2015, 21:24 pm
Tja, jeg har sett folk lage printere ved hjelp av pistons. Med litt fantasi burde det la seg gjøre å lage en scanner/hullkortmaskin også?
Tittel: Sv: En datamaskin bygget av Redstone
Skrevet av: Cybersyn25. Februar 2015, 20:53 pm
En hullkortleser med piston ville bruke år og dag på random access. En løsning kunne vært å kopiere programmet fra hullkortet til et RAM før det kjøres, men dette ville også ta lang tid for lange program.
Tittel: Sv: En datamaskin bygget av Redstone
Skrevet av: Cybersyn02. Mars 2015, 22:22 pm
Jeg har skrevet en kort, lettlest og vel dokumentert emulator av CPUen i pseudokode som burde gi et godt inntrykk av hvordan den opererer.

Det er visstnok gyldig C, men jeg har ikke testet om den virker som den skal.

HackCPU.h (https://github.com/osvein/HackEmu/blob/master/HackCPU.h)
HackCPU.c (https://github.com/osvein/HackEmu/blob/master/HackCPU.c)