Presentation is loading. Please wait.

Presentation is loading. Please wait.

Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 1 Warren Robinett University of North Carolina at Chapel Hill Department of Computer Science (Used.

Similar presentations


Presentation on theme: "Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 1 Warren Robinett University of North Carolina at Chapel Hill Department of Computer Science (Used."— Presentation transcript:

1 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 1 Warren Robinett University of North Carolina at Chapel Hill Department of Computer Science (Used with permission and revised by Andrea Di Blas, UCSC, for CMPE112-Computer and Game Console Architecture) Warren Robinett University of North Carolina at Chapel Hill Department of Computer Science (Used with permission and revised by Andrea Di Blas, UCSC, for CMPE112-Computer and Game Console Architecture) Design of the First Action-Adventure Video Game: Adventure for the Atari 2600

2 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 2 Atari 2600

3 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 3

4 4 Overview Early History of AtariEarly History of Atari Architecture of the Atari 2600 Video GameArchitecture of the Atari 2600 Video Game –Architecture of the 6502/6507 microprocessor Programming the Atari 2600:Programming the Atari 2600: –How Video Games Were Made in the Late 1970’s Design of AdventureDesign of Adventure Early History of AtariEarly History of Atari Architecture of the Atari 2600 Video GameArchitecture of the Atari 2600 Video Game –Architecture of the 6502/6507 microprocessor Programming the Atari 2600:Programming the Atari 2600: –How Video Games Were Made in the Late 1970’s Design of AdventureDesign of Adventure

5 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 5 History of Atari Atari invented the arcade video gameAtari invented the arcade video game –Pong, 1971, coin-op Atari 2600 hooked up to home TV, 1977Atari 2600 hooked up to home TV, 1977 –Games on ROM cartridges –18 million consoles sold, 500 game carts developed Creation of game genresCreation of game genres –shooters, driving, sports, adventure, side-scroller Atari invented the arcade video gameAtari invented the arcade video game –Pong, 1971, coin-op Atari 2600 hooked up to home TV, 1977Atari 2600 hooked up to home TV, 1977 –Games on ROM cartridges –18 million consoles sold, 500 game carts developed Creation of game genresCreation of game genres –shooters, driving, sports, adventure, side-scroller

6 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 6 Atari 2600 Specs 4K bytes of ROM4K bytes of ROM –for game program and data 128 bytes of RAM128 bytes of RAM –for game variables and stack 1.2 MHz 8-bit processor (6502/6507)1.2 MHz 8-bit processor (6502/6507) Custom chip (TIA)Custom chip (TIA) –“Television Interface Adaptor” -- codename Stella –generated video signal to drive TV 4K bytes of ROM4K bytes of ROM –for game program and data 128 bytes of RAM128 bytes of RAM –for game variables and stack 1.2 MHz 8-bit processor (6502/6507)1.2 MHz 8-bit processor (6502/6507) Custom chip (TIA)Custom chip (TIA) –“Television Interface Adaptor” -- codename Stella –generated video signal to drive TV

7 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 7 Atari 2600 System Diagram Processor6507 ROM TV TIAchip RAMI/O6532 joysticks Atari 2600 Console Game Cart video + sound paddles

8 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 8 Other 6502-based systems Apple I Apple II Apple II Commodore VIC 20 Commodore 64 (6210) Commodore 64 (6210)

9 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 9 6502 Memory map x0000 TRAP vector table x00FF x0100 Exception vector table x017F x0180 INTERRUPT vector table x01FF x0200 OS and Supervisor Stack x2FFF x3000 USER program and User Stack xFDFF xFE00 DEVICE registers xFFFFx0000 Zero Pagex00FF x0100 System Stack x01FF x0200 USER memory, device registers xFFF9 xFFFA NMI handler address xFFFB xFFFC Power-On Reset handler address xFFFD xFFFE BRK Interrupt handler address xFFFF LC-3 Memory map

10 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 10 6502 Memory map x0000 Zero Page x00FF x0100 System Stack x01FF x0200 USER memory, device registers xFFF9 xFFFA NMI handler address xFFFB xFFFC Power-On Reset handler address xFFFD xFFFE BRK Interrupt handler address xFFFF 0x0000 Stack0x00FF 0x0100 4KB System Memory 0x0FFF 0x1000 User Area 0x7BC0 0x7BC1 User Interrupt vector jump table 0x7BFF 0x7C00 I/O ports 0x7FFF 0x8000 Internal 64-byte register block 0x803F 0x8040 External ROM (system code) 0xFFFF HC11 Memory map

11 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 11 Atari 2600’s 6507 Same as the 6502, but:Same as the 6502, but: –13-bit address bus instead of 16 –No external interrupts Cheaper 28-pin package, instead of 6502’s 40-pin packageCheaper 28-pin package, instead of 6502’s 40-pin package Same as the 6502, but:Same as the 6502, but: –13-bit address bus instead of 16 –No external interrupts Cheaper 28-pin package, instead of 6502’s 40-pin packageCheaper 28-pin package, instead of 6502’s 40-pin package

12 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 12 Atari 2600’s 6507 Memory Map 00 - 2C: TIA chip registers00 - 2C: TIA chip registers 80 - FF: RAM80 - FF: RAM 280 - 281: Joystick port280 - 281: Joystick port 282 - 283: Console switches282 - 283: Console switches 284 - 297: Interval timer284 - 297: Interval timer F000 - FFFF: Game cartridge ROMF000 - FFFF: Game cartridge ROM 00 - 2C: TIA chip registers00 - 2C: TIA chip registers 80 - FF: RAM80 - FF: RAM 280 - 281: Joystick port280 - 281: Joystick port 282 - 283: Console switches282 - 283: Console switches 284 - 297: Interval timer284 - 297: Interval timer F000 - FFFF: Game cartridge ROMF000 - FFFF: Game cartridge ROM x0000 Zero Page x00FF x0100 System Stack x01FF x0280x0297 External I/O Not Used xF000 Game Cartridge ROM xFFFF

13 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 13 6502 Architecture Accumulator architectureAccumulator architecture Multi-cycle implementationMulti-cycle implementation 13 addressing modes13 addressing modes Accumulator architectureAccumulator architecture Multi-cycle implementationMulti-cycle implementation 13 addressing modes13 addressing modes

14 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 14 Atari 2600 -- The Bad News No frame bufferNo frame buffer No cacheNo cache No floating-point mathNo floating-point math No multiply or divide instructionsNo multiply or divide instructions –Adding two 8-bit integers: 10  sec Must generate a new video frame 60 times per secondMust generate a new video frame 60 times per second –Using 5000 machine instructions per frame No frame bufferNo frame buffer No cacheNo cache No floating-point mathNo floating-point math No multiply or divide instructionsNo multiply or divide instructions –Adding two 8-bit integers: 10  sec Must generate a new video frame 60 times per secondMust generate a new video frame 60 times per second –Using 5000 machine instructions per frame

15 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 15 Atari 2600 -- The Good News TIA chip – Television Interface AdapterTIA chip – Television Interface Adapter Hardware support for video gamesHardware support for video games –Sprites –Collision detection –Audio synthesis –Interval timer TIA chip – Television Interface AdapterTIA chip – Television Interface Adapter Hardware support for video gamesHardware support for video games –Sprites –Collision detection –Audio synthesis –Interval timer

16 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 16 Video standards

17 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 17 Horizontal resolution: 228 pixels 263 odd scan lines in 1/60 th second Video Frame NTSC standard 262 even scan lines in 1/60 th second 525 scan lines in 1/30 th second

18 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 18 228 pixels = 63.5  sec = 76 machine cycles 262 scan lines = 1/60 sec = 1/60 sec Video Frame Timing of Video Frame HorizBlank Vertical Blank ( VBLANK interr.) Overscan 192 lines

19 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 19 Frame Timing Kernel (display loop synced with scan beam)Kernel (display loop synced with scan beam) –Vertical Blank: 30 scan linesGame play – 192 scan linesDisplay – Overscan: 37 scan linesGame play –Vertical Sync: 3 scan lines Kernel (display loop synced with scan beam)Kernel (display loop synced with scan beam) –Vertical Blank: 30 scan linesGame play – 192 scan linesDisplay – Overscan: 37 scan linesGame play –Vertical Sync: 3 scan lines

20 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 20 Q: No Frame Buffer? How do you display anything? A: There is a buffer that can hold one scan-lineA: There is a buffer that can hold one scan-line –The processor keeps changing what’s in it as the scan beam moves down the screen. Unless the processor changes something, it generates the same line again and againUnless the processor changes something, it generates the same line again and again –Vertical stripes when the processor crashes. A: There is a buffer that can hold one scan-lineA: There is a buffer that can hold one scan-line –The processor keeps changing what’s in it as the scan beam moves down the screen. Unless the processor changes something, it generates the same line again and againUnless the processor changes something, it generates the same line again and again –Vertical stripes when the processor crashes.

21 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 21 TIA chip’s Scan-line Buffer: 6 “bit-planes” + background Background Missile 1 1 bit Player 0 8 bits Missile 0 1 bit Player 1 8 bits Ball 1 bit Playfield 20 bits

22 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 22 Sprite (P0)Sprite (P0) –Move horizontally –Change graphics –Change color –Change width –Replicate Sprite (P0)Sprite (P0) –Move horizontally –Change graphics –Change color –Change width –Replicate Things sprites could do

23 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 23 Kernel Programming Kernel loop synchronized with scan beam.Kernel loop synchronized with scan beam. –76 machine cycles per scan-line. Two-line kernels were usual.Two-line kernels were usual. –2 x 76 = 152 cycles for the loop If it took one too many cycles, timing failed and the TV screen rolled.If it took one too many cycles, timing failed and the TV screen rolled. Kernel loop synchronized with scan beam.Kernel loop synchronized with scan beam. –76 machine cycles per scan-line. Two-line kernels were usual.Two-line kernels were usual. –2 x 76 = 152 cycles for the loop If it took one too many cycles, timing failed and the TV screen rolled.If it took one too many cycles, timing failed and the TV screen rolled.

24 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 24 Cycle Counting 3LDALINE_COUNT3LDALINE_COUNT 2SEC2SEC 3SBCP1_Y_COORD3SBCP1_Y_COORD 2BPL*+102BPL*+10 3LDYP1_INDEX3LDYP1_INDEX 4LDA(P1_PTR),Y4LDA(P1_PTR),Y 3STAGRP13STAGRP1 2BEQ*+22BEQ*+2 5INCP1_INDEX5INCP1_INDEX 27 cycles total27 cycles total 3LDALINE_COUNT3LDALINE_COUNT 2SEC2SEC 3SBCP1_Y_COORD3SBCP1_Y_COORD 2BPL*+102BPL*+10 3LDYP1_INDEX3LDYP1_INDEX 4LDA(P1_PTR),Y4LDA(P1_PTR),Y 3STAGRP13STAGRP1 2BEQ*+22BEQ*+2 5INCP1_INDEX5INCP1_INDEX 27 cycles total27 cycles total

25 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 25 Screen Shots You could do a lot with this hardware.You could do a lot with this hardware. Every cart had a different kernel.Every cart had a different kernel. You could do a lot with this hardware.You could do a lot with this hardware. Every cart had a different kernel.Every cart had a different kernel.

26 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 26 Screen Shots

27 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 27 Screen Shots

28 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 28 Screen Shots

29 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 29 Screen Shots

30 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 30 Collision Detection: Detects Video Overlap Collision when pair of “On” pixels overlap Background Missile 1 Player 0 Missile 0 Player 1 Ball Playfield 6 graphic objects (5 sprites + Play Field)6 graphic objects (5 sprites + Play Field) –15 possible pairs for collisions –15 1-bit collision registers 6 graphic objects (5 sprites + Play Field)6 graphic objects (5 sprites + Play Field) –15 possible pairs for collisions –15 1-bit collision registers

31 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 31 Sound Generators 2 sound generators (only 1 used in Adventure)2 sound generators (only 1 used in Adventure) –1-bit wide, 30 kHz sound signal –4 bit volume control (16 volume levels) Generates pseudo-random sequencesGenerates pseudo-random sequences –4-bit sound type register (16 sound timbres) –5-bit frequency register (32 pitches) Processor could change sound parametersProcessor could change sound parameters 2 sound generators (only 1 used in Adventure)2 sound generators (only 1 used in Adventure) –1-bit wide, 30 kHz sound signal –4 bit volume control (16 volume levels) Generates pseudo-random sequencesGenerates pseudo-random sequences –4-bit sound type register (16 sound timbres) –5-bit frequency register (32 pitches) Processor could change sound parametersProcessor could change sound parameters

32 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 32 Design of Atari 2600 Adventure Directly inspired by the original text adventure by Willie Crowther and Don Woods.Directly inspired by the original text adventure by Willie Crowther and Don Woods. Main problems:Main problems: –How to do in a 4K video game program what took hundreds of K on a mainframe computer? –How to adapt the adventure game idea to the video game medium? –My boss told me it was impossible, and not to work on it. Directly inspired by the original text adventure by Willie Crowther and Don Woods.Directly inspired by the original text adventure by Willie Crowther and Don Woods. Main problems:Main problems: –How to do in a 4K video game program what took hundreds of K on a mainframe computer? –How to adapt the adventure game idea to the video game medium? –My boss told me it was impossible, and not to work on it.

33 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 33 Crowther & Woods Text Adventure Welcome to Adventure!! Would you like instructions? YES Somewhere nearby is Collosal Cave, where others have found fortunes in treasure and gold, though it is rumored that some who enter are never seen again. Magic is said to work in the cave. I will be your eyes and hands. Direct me with commands of l or 2 words. You are standing at the end of a road before a small brick building. Around you is a forest. A small stream flows out of the building and down a gully.

34 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 34 Picking up Objects ENTER BUILDING You are inside a building, a well house for a large spring. There are some keys on the ground here. There is a shiny brass lamp nearby. TAKE KEYS OK TAKE LAMP OK

35 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 35 Carrying Objects LEAVE BUILDING You're in front of building. INVENTORY You are currently holding the following: Set of keys Brass lantern

36 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 36 Moving from Place to Place GO SOUTH You are in a valley in the forest beside a stream tumbling along a rocky bed. GO SOUTH At your feet, all the water splashes into a 2-inch slit in the rock. Downstream the streambed is bare rock.

37 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 37 Obstacles GO SOUTH You are in a 20-foot depression floored with bare dirt. Set into the dirt is a strong steel grate mounted in concrete. A dry streambed leads into the depression. The grate is locked. GO DOWN You can't go through a locked steel grate! You're outside grate. The grate is locked.

38 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 38 Using Objects USE KEYS The grate is now unlocked. GO DOWN You are in a small chamber beneath a 3x3 steel grate to the surface. A low crawl over cobbles leads inward to the west. The grate is open. GO WEST You are crawling over cobbles in a low passage. There is a dim light at the east end of the passage. There is a small wicker cage discarded nearby.

39 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 39 Another Obstacle GO WEST It is now pitch dark. If you proceed you will likely fall into a pit. LIGHT LAMP You are in a debris room filled with stuff washed in from the surface. A low wide passage with cobbles becomes plugged with mud and debris here, but an awkward canyon leads upward and west. A note on the wall says "MAGIC WORD XYZZY". A three-foot black rod with a rusty star on an end lies nearby.

40 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 40 Creatures GO WEST You are in a splendid chamber thirty feet high. The walls are frozen rivers of orange stone. An awkward canyon and a good passage exit from east and west sides of the chamber. There is a threatening little dwarf in the room with you! One sharp nasty knife is thrown at you! It misses!

41 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 41 How to Adapt Adventure Game Idea to Video Game Format? How to display rooms?How to display rooms? How to display objects?How to display objects? How to display your own location?How to display your own location? How to move from room to room?How to move from room to room? How to display rooms?How to display rooms? How to display objects?How to display objects? How to display your own location?How to display your own location? How to move from room to room?How to move from room to room? –One room on screen at a time, using playfield (PF) graphics. –Use the Ball sprite. Joystick moves you. –P0 and P1 sprites. –Move off the edge of screen to adjacent room.

42 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 42 How to Adapt Adventure Game Idea to Video Game Format? How to pick up objects?How to pick up objects? How to drop objects?How to drop objects? How to use objects?How to use objects? How to do creatures?How to do creatures? How to pick up objects?How to pick up objects? How to drop objects?How to drop objects? How to use objects?How to use objects? How to do creatures?How to do creatures? –Video overlap of Self and Object sprites. –Video overlap of two objects. –Can carry only one object. Button on joystick drops it. –Object with subroutine to make it do things.

43 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 43 Network of 30 Rooms

44 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 44 Secret Room I created a secret room and hid my name in it.I created a secret room and hid my name in it. This was the first Easter Egg.This was the first Easter Egg. –“little hidden surprises” I created a secret room and hid my name in it.I created a secret room and hid my name in it. This was the first Easter Egg.This was the first Easter Egg. –“little hidden surprises”

45 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 45 Objects 3 Keys: opened castle doors.3 Keys: opened castle doors. Sword: killed dragons.Sword: killed dragons. Chalice: won the game.Chalice: won the game. Magnet: attracts other objects.Magnet: attracts other objects. Bridge: crosses maze walls.Bridge: crosses maze walls. Dot: gets you into secret room.Dot: gets you into secret room. 3 Keys: opened castle doors.3 Keys: opened castle doors. Sword: killed dragons.Sword: killed dragons. Chalice: won the game.Chalice: won the game. Magnet: attracts other objects.Magnet: attracts other objects. Bridge: crosses maze walls.Bridge: crosses maze walls. Dot: gets you into secret room.Dot: gets you into secret room.

46 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 46 Creatures 3 Dragons: chase you and eat you.3 Dragons: chase you and eat you. Bat: steals what you’re carrying, moves objects aroundBat: steals what you’re carrying, moves objects around BehaviorismBehaviorism –Each creature had a prioritized list of objects to go toward or away from. Responded to highest priority object in the same room with it. 3 Dragons: chase you and eat you.3 Dragons: chase you and eat you. Bat: steals what you’re carrying, moves objects aroundBat: steals what you’re carrying, moves objects around BehaviorismBehaviorism –Each creature had a prioritized list of objects to go toward or away from. Responded to highest priority object in the same room with it.

47 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 47 State Diagram for Dragon

48 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 48 Object List Data Structure Ob # 0 Ob # 1 Ob # 2 Ob # 3 Ob # N Ptr to location Ptr graphics # Ptr graphics tbl Color Ob attributes graphics # room X coord Y coord # Graphics Data # #

49 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 49 Room List Data Structure Room 0 Room 1 Room 2 Room 3 Room N Ptr to room grx Color Room attributes RoomGraphics (21 bytes) Adjacent North Rooms South East East West West

50 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 50 Adventure RAM USage Kernel variables: 18 bytesKernel variables: 18 bytes World state: 49 bytesWorld state: 49 bytes Program variables: 34 bytesProgram variables: 34 bytes Reserved for Stack: 14 bytes (max stack depth)Reserved for Stack: 14 bytes (max stack depth) Unused 13 bytesUnused 13 bytes – TOTAL 128 bytes of RAM Kernel variables: 18 bytesKernel variables: 18 bytes World state: 49 bytesWorld state: 49 bytes Program variables: 34 bytesProgram variables: 34 bytes Reserved for Stack: 14 bytes (max stack depth)Reserved for Stack: 14 bytes (max stack depth) Unused 13 bytesUnused 13 bytes – TOTAL 128 bytes of RAM

51 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 51 Adventure ROM Usage Kernel and display code: 751 bytesKernel and display code: 751 bytes General adventure game code: 1081 bytesGeneral adventure game code: 1081 bytes Code for creatures and objects: 763 bytesCode for creatures and objects: 763 bytes Sound code and data: 221 bytesSound code and data: 221 bytes Data structures and graphics data: 1263 bytesData structures and graphics data: 1263 bytes Unused: 17 bytesUnused: 17 bytes – TOTAL ROM 4096 bytes Kernel and display code: 751 bytesKernel and display code: 751 bytes General adventure game code: 1081 bytesGeneral adventure game code: 1081 bytes Code for creatures and objects: 763 bytesCode for creatures and objects: 763 bytes Sound code and data: 221 bytesSound code and data: 221 bytes Data structures and graphics data: 1263 bytesData structures and graphics data: 1263 bytes Unused: 17 bytesUnused: 17 bytes – TOTAL ROM 4096 bytes

52 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 52 Summary First action-adventure video game.First action-adventure video game. Sold 1 million units ($25 retail).Sold 1 million units ($25 retail). –I (Warren) got paid a salary ($22K/year). First action-adventure video game.First action-adventure video game. Sold 1 million units ($25 retail).Sold 1 million units ($25 retail). –I (Warren) got paid a salary ($22K/year).

53 Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 53 Summary From the web:From the web: Thank you, Warren!


Download ppt "Warren Robinett (Rev. by A. Di Blas, UCSC, for CMPE112) 1 Warren Robinett University of North Carolina at Chapel Hill Department of Computer Science (Used."

Similar presentations


Ads by Google