Invisibility Curtain
0:24
2 жыл бұрын
Lightspeed Raycasting Game
1:00
2 жыл бұрын
ViewTube NYC Subway Visualizer
1:13
2 жыл бұрын
Touhou
0:47
2 жыл бұрын
Water Raid
1:12
2 жыл бұрын
Pac-Mac Clone
1:01
2 жыл бұрын
Inside the Apple II
32:51
3 жыл бұрын
The Sparse Synchronous Model
23:02
3 жыл бұрын
The Spectrum of IC Choices (2/2)
26:17
The Spectrum of IC Choices (1/2)
18:57
Lines
27:57
4 жыл бұрын
Waveforms
28:55
4 жыл бұрын
Sprites
23:14
4 жыл бұрын
pool-maniac
0:40
11 жыл бұрын
RCS
0:13
11 жыл бұрын
BB
0:34
11 жыл бұрын
SE
0:56
11 жыл бұрын
CUDoom
0:48
11 жыл бұрын
optical-mouse-scanner
0:40
11 жыл бұрын
SB
0:38
11 жыл бұрын
Pah!
0:56
11 жыл бұрын
kanto
0:45
11 жыл бұрын
Pac-HHZ
0:29
11 жыл бұрын
Ah-Ah-Piu
0:40
11 жыл бұрын
WMT
0:33
11 жыл бұрын
Пікірлер
@douglasemsantos
@douglasemsantos 17 күн бұрын
The more I study, the less I understand
@servantofthelord8147
@servantofthelord8147 Ай бұрын
This was so cool! I wish you were a professor at my school - I literally go to Harvard 😂 but the teaching and humor doesn't compare to your style!
@user-uq2ks2dr4p
@user-uq2ks2dr4p Ай бұрын
I am just starting out. I am building the Ben Eater computer on a breadboard. I am using the ca65 and ld65 (assembler and linker). I am going to be watching your awesome guide lets says many many times, and taking notes. Ty for sharing.
@shinyhappyrem8728
@shinyhappyrem8728 Ай бұрын
The NES CPU core acually had the decimal mode circuits still on the chip, just disconnected.
@raghav5354
@raghav5354 Ай бұрын
What my professor at a T10 University couldn’t explain in a 1 hour lecture, this guy explained it in 5 minutes. Thanks a ton.
@b213videoz
@b213videoz Ай бұрын
Is this running on a FPGA board ? 😉
@user-bp6wk4qe9z
@user-bp6wk4qe9z Ай бұрын
It's a shame that you can't tag people here. Else I would be tagging Ben Eater, or The 8 Bit Guy on this video, they'd for sure enjoy this just as I did.
@ratfuk9340
@ratfuk9340 3 ай бұрын
This is cool. I like going back-and-forth between practical and intuitive explanations like this, and the more formal ones.
@manuelb636
@manuelb636 3 ай бұрын
Your videos are exactly what I like to see in technology videos. Thanks a lot, keep doing them. ❤
@MrCoreyTexas
@MrCoreyTexas 3 ай бұрын
feels like wozniak on LSD when he came up with the graphics scheme. So you can't have 3 pixels blue green purple next to each other horizontally. Talk about limitations!
@non_maskable_interrupt
@non_maskable_interrupt 6 ай бұрын
Amazing video! Thanks for sharing the knowledge!
@user-fo5pb5ro6l
@user-fo5pb5ro6l 6 ай бұрын
Incredible video to get me started with monads!
@viktorijazelnicki7032
@viktorijazelnicki7032 6 ай бұрын
Great video. As a side note, there is slight omission in the type of the prelude lookup function, and should be: _lookup :: Eq a => a -> [(a, b)] -> Maybe b_
@DDDDD428
@DDDDD428 6 ай бұрын
What if you want to return a more informative error than just returning "Nothing"?
@stephen70edwards
@stephen70edwards 6 ай бұрын
The Either typeclass is also a Monad that's designed to do this
@heinzk023
@heinzk023 7 ай бұрын
Video memory addresses were often arranged in an unintuitive way - although not always as tricky as in the Apple II. The reason for this is that it was Dynamic RAM, that had to be refreshed within a certain time frame to retain its contents. To create the video output signal, the video chip had to read the RAM in a repetitive way anyway, and if the addresses were interwoven in the right manner, this continuous read operation could have been used as the DRAM refresh.
@waynehawkins654
@waynehawkins654 7 ай бұрын
Amazing.
@Stabby666
@Stabby666 7 ай бұрын
Great video. Your comment about the zx80 at 16:20 isn't correct though. The glitching as the keys are pressed isn't due to the CPU conflicting with the display circuitry accessing RAM. In the ZX80 the CPU draws the screen itself, and so if it's doing anything else, including reading the keyboard it causes glitches in the video output. Also, why is the outro music about 500db louder than anything else? :)
@AdMC347
@AdMC347 9 ай бұрын
A crowning achievement of my life
@stephen70edwards
@stephen70edwards 9 ай бұрын
It was really cool
@activex7327
@activex7327 9 ай бұрын
4k = 4096 not 496
@ihuitson
@ihuitson 9 ай бұрын
I thew my Apple II Reference manual out in about 1999, :(
@haraldkrieger6562
@haraldkrieger6562 9 ай бұрын
❤Woz
@redcollard3586
@redcollard3586 9 ай бұрын
Well I'm pretty sure I could watch this at 0.5 speed and still have no idea WTF you are talking about. Back to the literature it is for me...
@hangonsnoop
@hangonsnoop 9 ай бұрын
Despite all of its weirdness and limitations, the fact that the Apple ][ had built-in color graphics made it the first personal computer that could be a video game platform. Other 8-bit computers had much better capabilities, but they came later and were able to use custom chips.
@erg0centric
@erg0centric 10 ай бұрын
I feel old. Apple ][+, two disk drives, amber monitor, Epson MX80f/t
@saganandroid4175
@saganandroid4175 10 ай бұрын
I am always baffled when programmers (who ought to know better) don't grasp, fundamentally, what a sprite is. Maybe it's just too exotic a hardware construct for softees to understand? This is the first time however I have ever seen a serious programmer conflate Apple II shape tables with sprites. This is like having a division routine and calling it a "math coprocessor".
@user-yr1uq1qe6y
@user-yr1uq1qe6y 9 ай бұрын
The term morphed over time to have a broader meaning than just hardware sprites.
@SnakebitSTI
@SnakebitSTI 4 ай бұрын
I'm baffled how someone managed to make it to 2023 without realizing that the vast majority of people are not talking about hardware sprites when they say "sprite".
@user-ok8yj8ln3u
@user-ok8yj8ln3u 10 ай бұрын
Thank you! Great work! What software have been used to create timing diagram @9:23?
@stephen70edwards
@stephen70edwards 10 ай бұрын
I do all of those in LaTeX using a tikz package (timing?)
@tr1p1ea
@tr1p1ea 10 ай бұрын
... doesn't mention the z80? Seems deliberate.
@jeffnay6502
@jeffnay6502 10 ай бұрын
I am interested in learning more about 6502 machine language. I have only been working with it on the KIM-1 for about 1 year and I created my own OP Code diagram which included the different addressing modes. That you explained in this video very well. Keep in mind that I am new to studying the 6502 and it's Op Codes, so there may be a mistake or two in my diagram. Please let me know if you find one. drive.google.com/file/d/1stT1klHHyHeuhXuHmm77puHzOgLKEF2Q/view?usp=drive_link I hope this table helps other 6502 enthusiasts like myself. Anyhow, I was interested in the way you were looking at the least significant bits starting with Group One (01) - Which basically repeats everything down columns 1,5,9,D and Group Two (10) - Which repeats everything down columns 2,6,A and E. I could also see how Group Three (11) - Which would include columns 3,7,B,F have nothing in them at all and Group 4 (00) which contains columns 0,4,8,C that do not repeat each other. Now when I look at the most significant bits or the rows across my table. I can see a similar pattern when it applies to addressing modes. Group 0 (0000) and 2 (0010) contain the same addressing modes as you look across each row and down each column. Group 1 (0001) and 3 (0011) also contain the same addressing modes as you look across and down each column.
@chromosundrift
@chromosundrift 11 ай бұрын
So well spoken, thank you.
@HaskallMonitor
@HaskallMonitor Жыл бұрын
How is that possible that lookup can get 2 parameters. It’s just a function that can get one or not (at least by ur definition). Your definition of the first lookup is not correct. It should be: lookup :: Eq a => a -> [(a, b)] -> Maybe b Don’t know why someone wasn’t noticing before.
@stephen70edwards
@stephen70edwards Жыл бұрын
You're right. I copied the type signature incorrectly. I think the rest is OK
@dk5146
@dk5146 Жыл бұрын
This guy deserves a prize. Thank you so much
@rursus8354
@rursus8354 Жыл бұрын
So monads are actually an admission that sometimes an imperative program solves the problem better, and we produce some elaborate syntactical sugar to return them back into existence. For me it looks like the do-construction is ambiguous.
@freeideas
@freeideas Жыл бұрын
So, a modad is just a state that is passed through a list of functions, with the output of each function becoming the state for the next function?
@ClassicTVMan1981X
@ClassicTVMan1981X Жыл бұрын
In other 1975 events: Linda Ronstadt had her first and only number 1 single with "You're No Good" (for one week in February 1975). Elton John's Captain Fantastic and the Brown Dirt Cowboy and Rock of the Westies both debuted at number 1 on the Billboard 200.
@hernancoronel
@hernancoronel Жыл бұрын
At 0:46 you meant 4 THOUSAND and 96 bytes, thanks for the video!
@ParanoidFactoid
@ParanoidFactoid Жыл бұрын
I built a Neutronics ELF-II in 1980 when I was twelve. It worked.
@waltermelo1033
@waltermelo1033 Жыл бұрын
And then! And then! And then! And then! And then! And then! And then! And then! And then! And then! .... She just enter in a infinite loop XD
@panographic
@panographic Жыл бұрын
Wow! I learn something new every time I rewatch this video (last count: 5). I believe that Rod Holt was the designer of the Apple II's switching power supply. He was recruited by Steve Jobs while working at Atari.
@ClausB252
@ClausB252 Жыл бұрын
Correction: Atari 810 holds 90K per side, and it also has a microprocessor inside, a 6507.
@MrRedstonefreedom
@MrRedstonefreedom Жыл бұрын
It's hilarious that every single description given on monads, of which I've now watched or read ~20, will say: "people over-complicate monads, here's a simple explanation", but then go on to give a completely unique & different take on monads. If 20 completely different, yet correct, explanations (totaling over 10 hours of sense description) on a concept can be given... maybe it's not so simple :p This one added something great though, as they all do, so thanks. Monads are very very complex; you essentially must look at it from many different perspectives to fully grok their power as a pattern in programming & category theory. The maybe monad is straight forwards and probably most programmers have implemented it even without realizing. But it is complex even if you don't decompose it back into monoids, consider their relation, and then consider what happens with variants on type signatures, expressions, or generalities. And then considering what may constitute a monad (eg an object may implement it with a method that injects this as the first arg of the binary operation). And then there are extensions like if you want to define overridable default behavior, or optionalness of promotion into the monadic type (which, by necessitating kick-outs into global state in some way, are not possible in haskell but in others).
@Boxing_Gamer
@Boxing_Gamer Жыл бұрын
Funny never had any serious problems with Stack, but maybe I was just lucky. Now I'm making games and there's simply no libraries for that, so had to stop using Haskell. But there's just no language as fulfilling to work with as Haskell, so I'm pretty sure you will be back.
@diakritika
@diakritika Жыл бұрын
Sorry, what means "DAdj"?
@super-khan3311
@super-khan3311 Жыл бұрын
"he clearly forgot how to use the return operator" that line is when i realised this is my new favourite channel
@sachinkainth9508
@sachinkainth9508 Жыл бұрын
I'm too dumb to understand this.
@christophhofer303
@christophhofer303 Жыл бұрын
what exactly dont you understand
@sachinkainth9508
@sachinkainth9508 Жыл бұрын
@@christophhofer303 Everything
@54egg
@54egg Жыл бұрын
Hello Steve, I am here watching your video because yesterday I had one of the co-patent holders for the TMS9918, Dave Ackley, sitting in my office. Dave is 87 years old and spoke about the 9918 like I would speak about a project I worked on last year. It was 45 years ago for the 9918. Dave coined the term "sprite" with respect to its use in computer graphics. Considering his name is first on the patent, I believe him! He described how the sprites were implemented and also the circuitry that encoded the NTSC video in pretty clear detail close to what I read later in the patent. To think at the same time (late 70's) I was struggling with trying to understand simple raster-scan timing chains, having to rely on mostly other people's designs (I was 15 years old) while Dave was 20 miles away building state-of-the art graphics chips. At the time if I had a little more design savvy, I would have been pushing for line drawing acceleration and possibly area filling hardware vs sprites, but I am sure would have taken more than the 1000 transistors OR so of the 9918 to implement.
@stephen70edwards
@stephen70edwards Жыл бұрын
Did Dave know about the line buffer approach that was being used in video arcade games? What does he know about how the 9918 technology ended up in the Nintendo Famicom/NES?
@54egg
@54egg Жыл бұрын
@@stephen70edwards I will have to ask him. If I have it right about line buffer system (looking at patent #US4398189A), looks like higher resolution (supporting interlace and 2X horizontal resolution of 9918), oriented toward frame-rate animation and 16 color (on 4096 color palette) foreground and background colors where background is limited to dictionary of blocks, allowing for composite multi-block patterns, similar to foreground. I am guessing this system is ultimately more complex and would not have been able to be placed on a single chip. Also, I assume memory bandwidth was much more limited in 9918 system. That is just me talking, and I am not a video graphics system designer. // I will ask about Nintendo...
@54egg
@54egg Жыл бұрын
@@stephen70edwards From Dave: Unfortunately that was a very long time ago, being last century. :} So I’m not sure what all we knew about the arcade technology of that era. I think that filling the screen using tiles was well know at that time and was the basis of the TMS9918’s background. My part of the #4,243,984 patent invention was the concept of a “sprite” and giving it it’s name. This patent was submitted on March 8, 1979, issued January 6, 1981, and references some 14 other patents My sprite concept was to use/extend the basic graphic tile concept to allow the quick/fine moving of a set of tiles as sprites. I also knew that it was important to come up with a good name for these beasts and I came up with the idea of calling them “sprites”. I picked this name because sprites can appear/disappear, jump around, and take different forms. The reason for the 4 sprites per line and total of 31/32 sprites was a silicon size limitation. By the way, there was a sprite attribute that allowed it to be a doubled in size (i.e. 16x16 rather than just 8x8) by doubling each pixel horizontally and vertically. At the time we described the technology in terms of a stage (the tiled background) with the sprites being actors that passed in front of each other on the stage I really don’t recall anything about how Nintendo or the Amiga computer came about using the TM9918 Sprite concept/technology. Dave
@54egg
@54egg Жыл бұрын
Loved the "coffee resistant" description for the Atari 400 keyboard. Nice to think it did have a positive attribute. I am glad to have not owned an Atari 400. I worked in a computer store in Dallas (The KA Computer Store) around 1980 and Apple II was the favorite child. If someone wanted an Atari, major effort was made to get them to buy the 800 unless they just wanted to play games and do MINIMAL typing then the 400 was a reasonable option.
@54egg
@54egg Жыл бұрын
Very nice video! ...but at 1:00 "Everything had to go through the accumulator" is not totally true (Ack, watching your entire video, I now see you cover this really well and this comment should probably be deleted!) . Many useful operations do not require the accumulator. For example you can rotate, shift, increment, decrement memory locations. Yes, a read modify write operation is performed by the processor on the data, but it, does not affect the accumulator. Instead an "invisible" data register on the CPU (and actually an "invisible" address register) is used. For example to left shift a 24 bit value located at $1 to $3 in memory. (zero page in this case) the instructions ASL $1, ROL $2, ROL $3 would be executed with no impact on the accumulator. This is a lot nicer than having to write LDA $1, ASL, STA $1, LDA $2, ROL, STA $2, LDA $3, ROL STA $3 which you would have to do without this feature and saves a few machine cycles (9 - I think) and code length (9 bytes shorter). Similarly you can increment and decrement memory locations where zero flag is useful if you have a multi-byte data where branch would be used to skip incrementing higher order byte when the lower order byte is not zero after its increment, e.g. 16 bit counter stored in $0 and $1: INC $0, BNE 1, INC $1 (where BNE is branch if not zero +1 instructions skipping INC $1. Hopefully this is pretty accurate, I wrote a ton of 6502 code 1979 to 1982 and NONE since, except I did kind of check my comment using an Apple II emulator I just downloaded with Integer basic ROM model including WOZ's mini-assembler. One final comment, of course if you wanted to do something like add two values in memory or add a constant to a value, then the accumulator would be needed for that.
@GeorgesChannel
@GeorgesChannel Жыл бұрын
Great video! Learned a lot :)
@adamdonovan88
@adamdonovan88 Жыл бұрын
This video is amazing. I wish I found it sooner.
@kellybmackenzie
@kellybmackenzie Жыл бұрын
_"After many years drinking the functional Kool-Aid, which had no side effects by the way"_ LOL I love that line so much This was so helpful, thank you so much!! This video explains it better than others have. Thank you!