Skrevet av Emne: RedHack - en datamaskin av Redstone  (Lest 10167 ganger)

Utlogget Cybersyn

  • n00b
  • *
  • Innlegg: 2
  • Karma: +1/-0
    • Vis profil
    • localhost
RedHack - en datamaskin av Redstone
« på: 21. Februar 2015, 01:44 am »
  • [applaud]0
  • [smite]0
  • Jeg jobber foreløpig med å bygge en datamaskin av Redstone på kreativkartet, basert på Hack-arkitekturen beskrevet i boka The Elements of Computing Systems (du kan lese den viktigste halvdelen av boka her, men hvis du er interessert anbefaler jeg deg å skaffe hele boka).

    Fremgang 05.03.2015:


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

    Grensesnitt kontra implementering

    Status

    2. Boolsk aritmetikk
    • HalfAdder
    • FullAdder
    • Add16
    • Inc16
    • ALU
    3. Sekvensiell logikk
    • Bit
    • Register
    • RAMn
    • PC
    5. Dataarkitektur
    • CPU
    • ROM32K
    • Screen
    • Keyboard
    • Memory
    • Computer
    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.

    Det er også mulig å programmere datamaskinen i et språk kalt assembly, som er beskrevet her. 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 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.
    « Siste redigering: 12. Mars 2015, 21:57 pm av BrutalOst »



    Utlogget Floyd-ATC

    • Livstidsdiktator
    • Administrator
    • Guru
    • *****
    • Innlegg: 542
    • Karma: +12/-0
      • MSN Messenger - floyd@atc.no
      • Vis profil
      • floyd.atc.no
      • E-post
    Sv: En datamaskin bygget av Redstone
    « Svar #1 på: 21. Februar 2015, 08:29 am »
  • [applaud]0
  • [smite]0
  • Spennende prosjekt! :-D


    -Floyd.

    --
    Det finnes 10 typer mennesker;
    de som forstår binærtall, de som ikke gjør det, og de som forstår Grey code.

    Utlogget Cybersyn

    • n00b
    • *
    • Innlegg: 2
    • Karma: +1/-0
      • Vis profil
      • localhost
    Sv: En datamaskin bygget av Redstone
    « Svar #2 på: 22. Februar 2015, 00:43 am »
  • [applaud]0
  • [smite]0
  • 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.



    Utlogget Floyd-ATC

    • Livstidsdiktator
    • Administrator
    • Guru
    • *****
    • Innlegg: 542
    • Karma: +12/-0
      • MSN Messenger - floyd@atc.no
      • Vis profil
      • floyd.atc.no
      • E-post
    Sv: En datamaskin bygget av Redstone
    « Svar #3 på: 22. Februar 2015, 21:24 pm »
  • [applaud]0
  • [smite]0
  • 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å?


    -Floyd.

    --
    Det finnes 10 typer mennesker;
    de som forstår binærtall, de som ikke gjør det, og de som forstår Grey code.

    Utlogget Cybersyn

    • n00b
    • *
    • Innlegg: 2
    • Karma: +1/-0
      • Vis profil
      • localhost
    Sv: En datamaskin bygget av Redstone
    « Svar #4 på: 25. Februar 2015, 20:53 pm »
  • [applaud]0
  • [smite]0
  • 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.



    Utlogget Cybersyn

    • n00b
    • *
    • Innlegg: 2
    • Karma: +1/-0
      • Vis profil
      • localhost
    Sv: En datamaskin bygget av Redstone
    « Svar #5 på: 02. Mars 2015, 22:22 pm »
  • [applaud]0
  • [smite]0
  • 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
    HackCPU.c