Hello, everyone. I hope everybody's doing well. Well today we're going to go through a penny stock, which vanguard earn three million seven hundred and twelve thousand and hundred and thirty-one shares of The penny stock that we're going to talk about today We're going to go through all the information about this penny stock and it's one that we've talked about But it's also one that I'm not surprised that institutions have not been selling en masse Okay, so we've had penny stocks because of the recent happenings with some of these growth stocks and penny stocks We have had a lot of institutionals sort of institutions selling out of some of these penny stocks But this is one which is kind of holding its own not only on the price action But also in the facts that it's still getting big investors involved And this is one where vanguard keep buying and they earn three million seven hundred and twelve thousand What why is that important? It gives a bit of sort of confidence in the penny stock Okay in the facts that big institutions are buying into this one and they're not selling out of it in these volatile times for this sort Of area in terms of penny stocks and growth stocks Of course not the overall market because the overall market is doing okay It's a particular segment of the market which are not doing as good now this one We're going to talk about today. Okay, if you could smash that like button It really does do appreciate that it helps grow the channel and helps it get it up into the YouTube search results I'm gonna go through the information in this video without favor to do to respect your time I've got to say I'm not a financial advisor. I'm a business teacher, but I'm by no means an expert on the stock market Let's get right into it. So as we can see here vanguard group Okay, so they have it as a cost basis of $2.80, which is actually quite high Cost basis of that but they earn three thousand three million seven hundred and twelve thousand 103 of this, okay, and you've also got Kings point earning a hundred and five thousand They've actually sold a few though and then hundred thirty seven thousand here hundred eighteen thousand eighteen thousand But the big one of course is Vanguard owning a huge amount here. Okay of shares in this penny stock Okay, so what we're seeing is what this adds is credibility to the penny stock that institutions are on large Holding it. There is some selling of course But there is a lot of them holding and some of the big ones are also holding which is good to see I'm going to go through that about this penny stock. So first of all, it's called drive shack took a simple DS one That we talked about before I'm going to go through some information about him Why I think institutions are continuing to hold this penny stock And you know, for example, Vanguard is increasing their position So and you got to remember this was also very recently. So if I just go back to the previous slide Okay, Vanguard that was twenty twenty one of five fourteen So not too long ago where this has been updated in terms of them buying more shares now moving into this So drive shack is a publicly traded leisure and entertainment company Focused on bringing people together through technology driven competitive socializing Experiences the mission is to become the largest venue based competitive socializing an entertainment platform in the country Okay, so very clear mission and it's a very clear business and what they're trying to do It's an entertainment based platform with competitive socializing. So that means, you know, there's in-person gaming Different gaming one of them is of course mini golf But there's also many other games and it's also got a bar. It's got food And it's an entertainment venue for corporate parties normal parties or just groups to get together Now we've seen this one have a massive effect because of what's currently gone on in the world, of course So this has not been growing its revenue as as much as we'd hoped to But because of what's gone in in a world, right? But I do see this has got a bright future ahead of it in terms of This the end of this year and next year. I see them actually bringing out some really good financial results Okay, I'm gonna go through why that is in this video Okay, so it's dry shack if you smash the like button while we're getting to this information Okay, so the courses and venues. Okay, so remember that they've been expanding the amount of venues that they've had So they did open one in Orlando. They've got these three here in the 2019 in 2021 they're looking new Orleans on hold which on hold and then they've got all these four additional targets including these three So seven in total and then in 2022 they're looking at actually opening even more venues Okay, even more areas so they're expanding expanding the amount of venues Which it means they could be expanding the amount of potential revenue that they're going to obtain by having more Venues available. So they're in expansion mode where they're actually Increasing the number of sort of drive shack venues puttory venues And and that's what they're looking at doing. So which is fantastic to do, right? So they're always expanding what they're doing, which is good to see Now also, they've got the games innovation part of it. So yes, they do have their mini golf. Okay, so it's towards Competitive avid go first for the drive shack. They've got the open tournaments. They've got Future tournaments running as well for the mini golf. Okay, then they've got the monster hunt challenge So it's got casual players and non-golfers increase engagement and spend pair visit Flexible game program allows for future enhancements first tournaments planned in debut Q2 2021 So they've got a more casual version of the game essentially for you know Maybe it's a group of friends that want to get together and just sort of casually play, right? That's what that's for that and then we've got the social leagues, which is casual social leagues less competitive league play Okay, way where there is a bit of a league for it But of course, it's just more of a casual area. So three areas of that of course It's mini golf. They have also got some different other gaming aspects in the venues the drive shack venues And of course, they've got the the food and the bars as well. Okay Now it did recently release its first quarter 2021 results and as expected I thought, you know, it's not going to be absolutely great because of the situation. So But I mean the company's revenue was of six sixty one point one billion Okay, and it was just flat. So compared to first quarter of 2020. It was just flat No, not much growth Which to be fair is not too bad the facts that they haven't like, you know gone down in revenue by like 20% 30% in the current situation and it's just fall flat Well, I think we're gonna see a lot more people go into these venues After this situation. So if it's flat now, I do think it's gonna increase in the future And I think we're gonna see some really good revenue growth alongside with these, you know Introducing of new venues. So we could start to see, you know, 20 30 40% revenue growth Okay, because they've got the new venues and I think there's going to be a pent up demand for these these sort of experiences Okay, I did actually improve its operating loss, which is good. That's healthy Okay, so it's it's lowered its operating loss Okay, and it's delivered a positive EBITDA of 2.7 million. So that's an increase as well, which is which is okay, right? So, you know, it's nothing too much to worry about here because of what the situation is and I do think the price is Is Reflective of that. I do see this one as a five to seven dollar stock very very easily. Let's go into the information So it's a leader owner and operator of golf related leisure and entertainment. So what did the what did they say about this? 2021 is off to a strong start for the a given the performance in both our driveshack and American golf business This quarter, we are extremely pleased with our first quarter progress as our results demonstrate impressive momentum in the golf and Entertainment sector with nearly a full recovery from the walking sales side of our business our strong results validate Our team's ability to adapt to the constant changes as well as the wants and needs of our guy I get our guests And it said that the total walk-in revenue for the quarter at drive shop revenues was 97% of last year's first quarter levels. So, you know, they're doing okay All things considering they're doing okay, and I think that in the future. We're gonna see like say that massive revenue growth Huge revenue growth in the future. Okay So that's what where I see that one going now the current price I didn't have it on here, but the current price is sort of around $2.60 What I would say is if you if this can drop down to the low $2 range That's a perfect buying opportunity. I would say get another financial advisor, you know If you can get this in the low $2 range I see this in the next sort of one to two years at five to seven dollars very very easily Which would be a good return even if it just gets to four dollars Of course and you can get it at the low $2 range still quite good. So again, this one I'm very confident in Okay, it's one that I'm looking to buy more shares in as it drops Hopefully to a lower level a bit more still so I'm buy some more And again the cost basis for Vanguard. I believe is it $2.80 $2.80. Well, it's currently at you know $2.60 so you could technically get your shares Cheaper than what Van Gogh Van Guards actually put paid for him. Okay, so consider that You know as it maybe drops down to $2.20 $2.40, you know I'd say you're getting a good price there for the medium to a long term Okay, so thank you for watching the video if you did enjoy it Then do smash that like button and also comment down below on your thoughts on driveshack What do you like this penny stock? Do you not like it? Let me know in the comments section down below and Remember to subscribe if you knew we cover penny stocks crypters all sorts of stuff and also I'll see everybody in the next one Have a good day


Day three Let's see if we can get this bitmap thing done so last time we Put the code in to scan the directory of the CPM file system so Now we actually go we are actually going to need to look at the directory entries to build the bitmap We don't actually need this for loading files, but we will need it for later. So we'll just go and do it now so we're going to add a pointer variable in zero page that will point at the Actually, I'm not going to call it FCB. I'm going to call it durant. I Will talk about FCB's later And this is going to point at the The dear directory entry that we load from disk as part of this so We do this here This will give us a pointer that we can use to examine the directory entry so a contains the offset Into the sector Directory buffer is a pointer to the directory buffer so we want to add the two together and write that to Did I call it dear end? Let's make this current dear end Current in a lot of places Current dear end. Okay So now in this code we read disk This is inside bitmap here on the left. We are going to Ignore a lot of this We do need to check to see whether this is a If this is directory entry is actually used if it is an e5 then we know that This directory entry is not in use. Okay Now we have also Something I did since last time is I added a macro that prints debug messages So we can just do this. He won't disturb any of the registers So now we can run the thing And we should see that message twice There we go because there are two valid directory entries So now that we have a valid directory entry We then call another routine to Actually update the bitmap What this will do is it'll walk through the block allocation inside the dear end and Update or clear any of the bits in the bitmap this corresponds to set file here So this will go here This is a separate This is a separate Routine because we're actually going to be using this elsewhere And I actually think we want this to be X So this in the CPM 80 is called set file here so this gets the Address of the dear end which is calling an FCB here and that is incorrect. It's not an FCB I'll talk about FCBs later adds on 16 this gets the address of the The allocation map it then Reads them one by one and They can be either One byte wide or two bytes wide depending if this is a big disk and if the block is used it will then Do the thing Which in which this case is to either set or reset a bit in the bitmap so this is where the blocks start if We are a we now need to check to see if we're a big disk Which yesterday we decided we were going to do with? By loading the High byte of blocks on disk so that if that value is zero We are a small disk if it is one we are a big disk so if we If it is sorry if it's zero or not zero so if it is not zero otherwise We want to Load to the block number Do you think we want to load the block number into? It's 16 bit block number we want to load it into a X we have run out of registers So let's store This flag In plus zero So if it's a big disk Then we want to load the low byte Increase Y load the high byte increase Y and Fall through to the routine that actually checks the block and We can't do that because We don't have this addressing mode So we're actually going to have to do more stuff So we're using 10 plus here and 10 plus one to store the set free flag and the current offset So for every block we want to Let's not do that just yet. Okay, that should do it Do a bit of stack juggling here We Pull the low byte stick it on the stack Pull the high byte Put that in X Pull the low byte off the stack We have We are very limited as to what we can do with in directions. Okay. Well that compiles We now want to check to see if the block that we've got is zero Because we know that if it's zero, it's in use it's it's not in use so that's in a and X There's not we can't do arithmetic on those So we're going to have to stash them both values Into Zero page so we can work on them and in fact if we're going to do that Then we might as well just to each store here takes two bytes the push here was one byte and this And juggling is to Let's just do it like this easier and in fact we can leave the the high byte in a So we've got the high byte in a we want to Or it with the low byte if it is zero then Continue on with the loop. This needs to be a Y And here we want to say if the offset is 32 Then we have run out of blocks and exit So we actually want to do this so Every time we hit this line here. We have a Allocated block that we want to do something with So you can put a debug statement in And run it we see two blocks That is exactly what I want and let's actually adjust this our temp is organized as two By a two words Thing is that we are going to have to stash Y This should not be an RTS. This should be a jump to Block loop. Yes, that only actually worked at all Because our files each have one block so here we are going to want to true Calculate the bit in the bitmap Which this block corresponds to and Either set it or clear it So it's set file that does the work so st bitmap is the code that actually Stores the bit a routine to get the bit from the disk space allocation map Set BC to the block number on return D will contain the original bit position for this block number and HL the address so we're actually we need to Offset into the bitmap To find the appropriate bite each bite contains the bits for eight blocks so we're going to need to end up with a pointer to the bite and Which bit in that bite it is? in xA and the Okay, so this will call get bitmap location So the first thing we want to do is to get the actual bit position Which is very simply you just and the the low byte with seven and Stash We then are going to shift the The block number right by three bits But we for to do this we either want to have the value in xA or The value in 10 zero we want it in 10 zero because that's where shift R is going to expect it So we're going to want to Swap a lot of these So that's going to be 10 plus 2 to be 10 plus 3 So we know we're putting the block number in 10 plus 0 and we had an extra in An extra entry point to the shift our routine that does not set a and x Because we know that the the value is already in 10 zero where we expect it to be that's all we need to do is it Yes, it is So we get the bitmap location. We now want to set or Clear The appropriate bit. How is this supposed to work over here? Ah Right, it's expecting CK bitmap to return whether it's allocated or not So we're going to put this we can't put that in We can't return that in anything other than a because we need to push and pop Okay, so to put that in X load a with load a with one and We want to shift the The one left to get a mask This is going to be really painful. I think we need more primitives So get bitmap Status we call Get get bitmap location. We then want to shift our one So that he's in fact this code here to get a mask and We are going to put this in a helper. So that then produces a mask No, we don't want to do that We're actually want to use Shift R So you put that in Y. Yeah, no, we don't We want to shift this bit right. I was expecting to use These but these use temp So we're actually going to do going to have to write a right Time and once again these registers are wrong. I don't want to use Y for that. I want to use X for that because We need to put zero into Y So that we can read The actual bite out of the bitmap Then we shift the bite right and exit Okay, so To set a bit We get the location We stick that thing in X We now need to mask off the old value So this will compute a mask we then Invert it and it with the bitmap bite write it back This will This will clear the bit Does PLA set flags? Good. It does. It sets the Z flag. So we can say If it's not equal then set bit Otherwise we clear the bit. So in order to Set the bit we compute the mask Based on the value in X and then rather than ending it we Or it in are not inverted as well. Okay. Well, that's fairly nasty code. Oh Just looking at this that's really cunning That's really cunning So rather than just shifting Left and right here what it does is it rotates the bite So that all the bits are still present just with the one we want in the least significant bit Position Then it can operate on the bottom bit of that value then it shifts everything back again and writes Now we can do that in the 8080 Because it's got eight bit shifts eight bit rotates but the 6502 has nine bit shifts so actually doing an eight bit rotate is Harder than it looks So I found some code here for doing eight bit rotates Which looks clean enough that I think we are actually going to put that in so I'm going to replace these with Rotates to rotate right eight times So to rotate left this one is rotate right So LSR a is logic shift right this rotates Rotates nine bits where the right most bit goes into carry and The left bit ends up with zero as a zero so So if the carry is set we manually Set the top bit, which is kind of ugly but works So to rotate left then we Do a shift left Again a zero be a will be inserted on the right and the left will go into the carry and Then we can do a ADC zero, which will add the carry on to the value Thus putting the bit that was in the carry into the low byte so Get bitmap location this turns the bit position in a so this gives us the Rotated block status in order to set We stash the rotated block status the updated rotated block status We now want to rotate left and then we can just Plunk it back into the bitmap like this, okay So what we're going to do is Get bitmap status that gives us the rotated This of course will overwrite temp zero Which is our block number so that we cannot then call set bitmap status because this has gone Because this consumes both x because rotate our aid will reduce x to zero and The block status So I think set bitmap status is going to have to do both at once It also consumes why because we need that to index Yeah, this kind of bit fiddling is something that 6.02 is Not brilliant at simply because there are so few registers So let's push the bit position here transfer A to X So this gets us the rotated status in a Clear the bit we care about We now want to load this Things you've got this on the stack in the way. So pull the bit position Put that in X Ready to unrotate pull the new bit We now want to or it with why but we can't because there's the 6.02 doesn't have that instruction I don't really see the way you're supposed to do things here is by putting the value in a 0-page byte, but I'd rather not use more more zero page So there is something we can do and it's a bit foul, but it will work So here we wish to So this value here This value here should contain the The bit that we want to put in the In the bitmap We just have to get it from here to here and the easiest way to do that is With self modifying code So assuming that does what I want it to do. No, it doesn't Oh No, no, that's fine. This needs rewriting. Okay So this will stash the bit the bit value we want Directly into The operand field of this or instruction Which is fine and likewise We want to get the the bit position here So that we can rotate We can unrotate this like so Just wonder is there a way in which we can avoid This we can push it onto the stack But you can only pop into a and a is in use because it's got the actual like value So I think this is probably the cleanest we'll do the cleanest we can do Okay, there is another thing which is in fact I have gotten the The rotate the wrong way around bit Block zero Wants to go in the highest bit of the byte so This is going to return a bit position of zero We really want it to return seven so we kind of want to Do seven minus this value That would involve a reverse tracks and guess what another thing that six oh two is not very good at Ideally we want to be able to say this so seven minus a But we can't There is a way so we invert the value and Add the thing you want to subtract So our bit number here can be zero to seven Block zero Will end up in bit seven block seven will end up at bit zero and we also have this the wrong way around No, actually, this is right So we want to rotate right by the bit position. Yep. Okay, so Update bitmap for dear end. We have put our set free flag into X So here going to change this to update bitmap status We are actually going to Get the set free flag Update bitmap status. This should then update the bitmap So does it work? Well We can run it and It will do this Which is just what I was expecting We're actually going to need to step through this or preferably dump the bitmap once we're done or To be honest both Break 1903 and continue Run Okay, we're in our code How do we identify? This piece of code go ldy 16 cpy 32 should be here somewhere We don't actually have terribly much code these roles are Here so we are in read dear entry Here is our update bitmap for dear end code at 1 a 09 right? We're here. So the set free flag is in X. It is a one so we store Y is the Position into the FCB which is 16. Are we at 20? No, we're not Are we a big disk? No, we're not A Memory address for here is pointing at the current dear end which is 5db Here is our dear end For the not routine so we have one block which is a two and everything else is zero So we fetch the block. We are here Stash it the high byte is zero Increment y to the next block store the high byte Check for a zero which it won't be a is to we are now here We store y but we fetch the set free flag into a which is a one We go to update bitmap status We are here so we poke the We Poke the block status into This instruction we then try to get the bitmap location, which is here So 10 plus 2 this should be Well, this is block 2 So a is a is one that's just that's not right This is wrong This should be a zero Okay, one a three eight we want to restart from one a three eight. Okay, LDA six This gives us the low Block byte of two We've ended it with seven invert Reverse subtract Our value is five Which is Correct we then Push onto the stack. We now want to shift temp zero right by three We actually know this works. So and we can abbreviate this code a bit by using a Logic shift right for the first roll. I'll deal with that later. We're here Restore a which is still now five and we are here So we store the bit position We now want to do the rotating stuff. Yes, this has consumed the block number Intemp zero So this should return the byte in the bitmap which Block zero and one are used by the directory. So this should be C zero and It's not What is the value at six? Oh, oh, oh, oh We have not added the bitmap address so low byte of No, hang on bit maps a pointer low byte of bitmap C and C ADC 10 plus zero 10 plus zero Plus one Okay, we are here. It was the wrong button. Where are we? That's an LD a We're here. That's actually That's actually right get bitmap location good So we compute the location shift Right to get the bitmap pointer Now we are going to add on the bitmap address Which is that six six B? So if you look at that address there is our C zero So we're now here So we now load the byte there we get our C zero and a and we rotate it That's not very rotated That's because we haven't asked it How much to rotate by that's why so we need a TAX there For the first rotate bit pause here has been used for the second rotate So we're at get bitmap location No, we're not We're at update bitmap for deer ant Now we're at get bitmap location We are here store Get the value and That did not rotate that crashed Okay, so 3d reset New doesn't reset very reliably. Okay one B 3d. We are at rotate our 8 that needs to be a x No, it doesn't It does need to be one of these but I forgot to put a label in here. Here. We are and rotate our 8 X is 6 To rotate wasn't it five last time that's because we just inked it So we break out one before nine continue. We're now exiting from here. Here is our rotated value that is Zero one one zero Which is exactly what we want. So we're here We mask off the bit we care about this won't change because it's not set We are in the new bit See this as we've poked a one into the operand field here giving us a seven We now want to rotate left giving us E zero and Then we are going to store it back in the bitmap Done so that was the first file we go again. We should hit the second file Here we are in the rotate end of the rotate Here's the rotated value which you can see contains The bit that we set last time So this will set another bit making it an F So the first four blocks of the file system are in use and we stash it back and then we hold Good that works We are now correctly generated the bitmap So we have actually Now executed all the way to here. So now we need to talk about actually Now we need to talk about FCBs FCBs are how CPM Managers files POSIX and most operating systems that people are used to these days use file handles You open a file. It will allocate you a new file handle The data for which is stored in the kernel and you just get back an index to the file handle, which is yours CPM doesn't work like that instead CPM you go Makes you the user application Track a Structure, and this is actually the deer end which is slightly different but and The structure lives in application space and that contains all the information CPM needs to manage the file The advantage of this is it's much easier to do memory management because it's all statically allocated by the application and things like You don't need to close files if you don't have data that needs flushing you just discard the structure Because there is no cleanup that needs doing So an FCB Actually looks like a deer end the 32 bytes of directory information There are some of these fields are used for something else When they're in memory than when they are on disk and there's another three bytes stuck on the end Which is used for random access Actually, I know where to find this If we go to the BDoS call for Opening a file because that's what we're going to have to do next The FCB is 36 bytes structure Here it is So you can see this looks almost identical in fact the we have These four bytes on the end CR is the current record which Tells you which record you're looking at within an extent and These three fields here Their mark does reserved which is not terribly helpful, but they're used to track which extent you're in Oh, and DR here contains the drive number not the user number so Here in our warm start code What we want to do is to load the CCP to do this we need an FCB that we're using to Reference The CCP the command processor So this is going to be a structure We seem to have already decided that our code is mutable. So it's on drive a always four five six seven eight CCP dot sis These four fields need to be zero on entry we then have these fields are This is where the directory allocation lives this is not something the user should care about and The current record is zero and We don't actually need to allocate space for these three because these are only used by the random access functions So so we want to open the file So now we kind of want to write this and this is going to be one of our major entry points If this returns an error code Okay, so let's just put a halt here and A debug line, so now we should be able to run it There we go, we are trying to open the CCP so what is this actually going to do well The first thing we want to do because we're going to be accessing the CCP the NFC be we want a Variable for that so I need to figure out what the BDOS implementation here is Got calling this is the CCP. I think open it was the one Looking for the jump table. That's the That's the actual BDOS entry point which should be somewhere around Here it is Open fill is called so this is not actually complicated this Needs to make sure that the fcb is initialized it selects the disk described in the fcb and Then it jumps to the internal open routine. So we Clear the s2 byte s2 is 14 like so you can Either have a drive specifier in here in the first byte or zero This is really irritating Because this is a different drive numbering scheme than you then is used actually in the rest of CPM Because we have drive one being a rather than drive zero, but that's what it is. So so we want to load the Get the drive bite if it is If it is zero then we actually want to get the Drive here Select the drive This is more complicated than I thought it would be Okay, we're not Yes, we need to set the active drive and then select it and we only do that if It's a Different drive This is more complicated than it ought to be to be honest. I Think it's assuming that if the drive is zero then you get the currently selected one I'm not sure I like that terribly much. I think it should just be this So that if it's not Zero then We want to Decrement it if it's not zero then this means the user has specified a drive number. So we decrement Just thinking the least bad way to do this Want to decrement it and stash it an active drive? like that Okay, so we should now have arrived here with a selected drive and A valid FCB Okay, we're here. So in CPM 80 Open it here is the is the routine that does all the work and There's actually not very much of it because it all the work has mostly been done elsewhere So what it actually does is? It stands the entire directory Using find first here Looking for a dear end with the matching file name and a Extent counter of zero this means that it's the first the first Directory entry of the file Then it just copies the directory entry into the user FCB It makes a few a few adjustments and that's it. That's all that you need So we need find first Find first is a primitive that's used absolutely everywhere That was renames was changing attributes opening a file closing a file Find a empty space in the directory get the next extent of a file Random access stuff This is the actual directory scanning stuff that is exposed to the user and so on You tell it how many significant bytes of the FCB you want it to check for? So you can give it 11 for just the file name 14 for the Sorry hang on we start again from the beginning actually we you give it 12 if you want to scan for a File in a particular user Because this first byte here actually will actually get replaced with the user number you're looking for It's only a drive When it's in user space Or you can give it 15 to indicate that you want one specific extent Or you give it just one to indicate that you're looking for an empty space So what this actually does is it just? Resets the file position that we've done before we did that when logging in the drive Somewhere here and then it does lots of reading directory entries so So find next looks for the next file and it's going to be a loop where we look We look at each directory in turn if we reach the end stop In fact if we reach here Then we haven't found whatever we were asked to find and then there's all the Comparisons stuff while there's a lot of this and you can search for wildcards So we want to actually Want some variables for storage here? so we're going to have So this is the count of characters that we Want Actually, I'm just wondering do we need to When preparing the FCB do we also need to replace the Drive byte with the current user number. I think we do So this was open file Here s2 clears the Yeah, that's not complicated It's used to it uses a flag bit For things like you know is the file modified if so then when the FCB gets closed We need to flush the FCB out into the directory So here is open it so find first Must be Modifying the FCB if necessary character count File name to match is in params. I'm not quite sure what it's doing here What is params? DE parameters here on entry Okay, this is This is the pointer to the FCB then So that is fetching the FCB pointer that the user supplied and stashing it in save FCB clear initial file position home the drive and Then we start fetching directory entries so Read directory entry Check to see if we're at the end branch so here Here we actually say that we want to read we want to buy FCB Find first That does actually work up to this point. So we've read a directory entry We now need to match it to see whether It's something we care about So first thing is to check for a empty directory entry so here we jump to find next one if the DE is the pointer to the deer ant if it's e5 we go here Doesn't make a lot of sense. I would have thought that would be That should be a not Zed That is if we want to continue with the match only if it's not a DE5 So yeah, I don't know how that works. It could be a typo. Let's take a look at the other one This is the same file, but in 8080 machine code Yeah, these are actually the same comment. So that's not helping. Oh wait a minute. Wait a minute This isn't loading from current deer ant. This is loading from current FCB So as you see it's loading save FCB into HL Putting it in DE and then loading that it wants to know whether the user has asked to match for deleted entries Then it's going to be using This Yeah, if if the user has asked for deleted files it then will skip this check here Which seems to be checking for Whether we've reached the end of the directory or not It tracks how many files are in a directory So that it doesn't have to load the entire directory every time you want to do something Yeah, we haven't done that the the directory log-on stuff. It will scan the directory and Keep track of the last File Directory entry in the directory and it's stored in scratch one. We haven't done that at all. So We have to get here where we're actually comparing the file names So there's a bunch of setup Which is actually easier for us as we don't need to set registers because you've got everything we need in zero page So we load the number of significant bytes so we now want to get a file name from the Character from the FCB I'm sorry that should be a y and in fact That'll be one less So we're going to we actually start at the right hand end of the deer ant That's what the code here is doing loads the number of No, it doesn't know it doesn't it counts up? Okay So we are actually going to do that like this So we load a byte from the FCB If it's a question mark we We don't compare this byte Also, we This is clunky code. I have to say we also Don't care about byte 13 which is zero one two three four five six eight Nine ten eleven twelve thirteen. That's s one That's on on disk. That's the unused byte if it's the If we're on byte 12 the extent byte otherwise We compare the two characters by subtracting them if they are not the same then we Give up and we go right back to the top to find next so if the characters are the same then we go to Find next for which is here compare with Can we do cpy With an absolute address. Yes, we can if If we have not reached the end of the string go back to the comparison loop Otherwise so Looking at how this is done so what these will actually do is Return you a value zero one two or three Telling you which directory entry in the directory buffer Your matching dear end is We already have our directory Our current dear end pointing at the right place So all we need to do is just stop No more files wants to return an error very simple. Oh and we also want to reset the Directory position counter So there's one thing we haven't done, which is we need to compare Extents we're actually going to do this Okay, where's the extent comparison code? Here it's using a routine called Sam X which is used in one place so because a Directory entry can contain either one or two Extents we need to do some special stuff here this gives us the extent mask we now want to and Both the extent in the Directory entry and the extent in the FCB and check to see if they are the same Well anding the FCB extent is easy of course, we can't just compare it to the the one in The dear end let me just take a quick look here. What does this bit instruction do nothing useful? So I think we actually need Storage it's in order to do a comparison. We have to have one value in a and the other value in Memory somewhere, okay, so Pull the mask and With current here and come away Compare with the value that we stored earlier in the extent mask in the extent bite only the The bottom five bits are valid. So If the result is zero, they are the same Otherwise They are not the same and we go around again, okay so We are looking for four jsr's in a row That's our FCB Which is here. No, it's not it's here Here are four jsr's in a row. So this STA at one nine nine F is Find first so we put our rate point there Okay, we are comparing 15 bytes So store that home the drive Reset the directory position Now we're in the find next loop read a directory entry Check to see if there are if we've reached the end of the directory We haven't Did the user ask for deleted files? Well, that should be a cmp So that's not going to help the user did not ask to see deleted files In fact, let's just One nine three three is and that's the dear end for ccp.sys so We are now comparing the file names between the The value in the dear end and the value in the FCB So load a byte out of the FCB. That's the first byte which is the user I Still don't know how the FCB drive gets reset to be honest. Is it a wild card? It's not a wild card Is it by 13? It's not by 13. Is it by 12? It is not by 12 So we go up to the character comparison stuff So if I Look at four. That's oh five DB Here is the dear end we just read So we're going to be comparing zero and zero giving us zero Mask off the top bit. That's top bits of the file name are used to store file attributes They are the same so increment Have we reached the end of the string? No, we have not so we go around again So we should now be comparing a N for not and a C for ccp. So this should fail Check for a wild card saying characters blah blah blah That gives us f5 Mask That is not the same so we give up And go back up to find next So we read the next directory entry as the user want to see deleted files again Prepare file names again Yes, I feel reasonably confident that this is going to go around Until we hold So we hit the breakpoint here. We should have failed to find a file Because we don't have a ccp dot sis so if there is if the carry is set this means that We failed to find something we wish to exit That wasn't right That wasn't quite what I was expecting. I have to say so what I was hoping was that This would error out This would exit with carry set We would hit exit here And return and we would get this message rather than This message the question is of course why they I'm not sure that my debug string has worked Which would be annoying. I think this is failing somehow Let me take a moment and fix it Okay, I have it working Everything was fine. I just had incorrectly set the stack pointer and as a result my debug of routine here was Falling off the top of the stack and bad things were happening. Okay, so we actually want to Put a proper error routine in here to say that You know, it couldn't find the ccp, but we're not going to do that now Okay so We now want to Create our ccp So we create a dot s file for it. We add this to the make file Okay Actually we want to put this in the file system. Okay, so that has now created a Ccp dot sys that has gone into the cpm File system so we can now see that there are three directory entries Of which ccp dot sys is one block four There is in fact no ccp data So it's like Two ffs for the relocation table both of which are empty and no relocation header Which is quite wrong, so I'll just fix that Not here is our not routine And this is This is a com header So in fact that will do just fine Okay, that builds So now when we run our program we should get a different message Yes Good What that means is that we've iterated through the directory Until we have found a a dear end with a matching file name and We then have some stuff that we haven't done yet To actually Open the file when I say open the file. I mean copy the dear end into the The fcb so we found the first one and what is this doing? Right we want to fetch the extent byte out of the user fcb Because it doesn't necessarily match the one on disk so that is going to be extent byte is 15 14 12 Stash we are now going to copy Dear end to the fcb so 31 bytes There's a loop you know how loops work So this copies all the allocation data also I realize that our Extent comparison is I believe our extent comparisons incorrect I think we should be checking for extents that are less than the one the user asked for Because you're allowed to fetch extents that don't exist on disk yet anyway, we copy the dear end We want to set bit 7 of s2 to indicate that the Directory is unmodified s2 is 14 Get the extent byte back again. Is this correct then by within the user fcb Okay, this is the address of the fcb and because we have copied to The fcb is now the same as the dear end So this is to Is it cpm tracks the length of files in records not in bytes so that if the Directory dear end match if the directory extent matches the user extent Then we are looking at the last extent of the file Therefore we use the record count in the file because it's partially full If it is smaller Then we're in the middle of the file So we use a maximum record count size if it is larger then we are after the end of the file and We use zero because there are no records here if the carry is set. This means the user byte is bigger than the Dear end bite So the user extent is smaller. Therefore the record count is going to be 128 larger and you want to set the record count which is This one Current record Do we want to that current record within extents that the right one or do you want to set the other parameter? 15 right no, that's a different one. We want to set this one and CLC to indicate it works and we're done. Okay, let's try this Debugger so we are at the top of the file Go through the setup code. We're now in exit reset the disk Open the CCP Carry is not set So if we look So it thinks it's succeeded. So let's look at our CCP which is in one nine four our FCB which is in one nine four five oops five we see Yes, look there's an allocation We have successfully opened a file on our CPM file system So the next thing we're going to do is to actually read the CCP into memory Relocate it and run it But we're going to do that next time So until then


This is going to be a 34-year veteran takes on Andy Elliott. My man takes on Andy Elliott on a price objection. Are you ready? My man. All right, Jesse, you sell Chevy's and Dodge's. Am I right? Yes, sir. All right, cool. This is the deal for you. This is the ultimate test right now, okay? And you got to close me on this. All right, Jesse's looking at a new, my bad, Jesse. I'm looking at a new truck because I'm your customer. I'm looking at a $50,000 Chevy. It's got $5,000 in discounts. And I can buy it for $45,000 from you. This is your proposal to me. Okay. But I've seen a Dodge down the road at a different store that was priced at $50,000 that has an $8,000 discount. And it's 42 grand. Jesse, this is going to be the objection. You sell Chevy's. You want to lock me up right here. Okay?  And if you can do that, you can earn my business. Come on, Jesse. You want me to match that? Yep. Jesse, you sell Chevy's? Yeah, both. I sell both. Uh-huh, but we're going to act like you don't. I want you to sell me the Chevy. Okay. All right? Yeah. All right, you guys ready? All right, guys, now listen to me. Follow me. This is going to be something, I don't care what you're selling, right? Somebody's always going to say they saw a better deal somewhere else, right? Yeah. Everybody's always going to say your competitor's got a better price. Am I right? Yeah. Okay, when they say that your competitor's got a better price, where do you go?  Yeah. Yeah, we're not playing that. Okay? And that's what I'm playing with you. Okay. So, again, we go into my man, 34 years experience, taking on big daddy right here. Closing, Jesse. Hey, Jesse, appreciate you, man. It looks like that's a great deal, but I found a Dodge that they're giving 1000 off. I can buy for 42. If you'll match the Dodge price on your Chevy, I'll do it. If not, I'm going to go buy the Dodge down the road. I understand, Andy.  Let's face it, I've done some homework on my own. And as we were talking on the demo ride, I had asked you if you'd been the military, and you said you hadn't been. Okay, well, $1,000 of that discount, there's a military discount that you won't qualify for. Well, I was already been there, Jesse. You got the truck ready for me. I can just go down there and sign papers on it right now. I bet you can, but I promise you when you get there, they're going to get there. I've already been there. I understand. Why aren't you driving it though? I was going to give you a shout-out on the Chevy. Bye, Chevy. This is not my price. This is the vehicle. You drove the vehicle. This is the vehicle you decided you liked. You want it. It has everything you want. You know what? $3,000. It costs $5,000 for me. That's not even my best price. I want $50,000. I want $5,000 more because that's my best price I cost. I come with $5,000 because... I don't even know what that means. The service after the sale, I want to get you. That's the price I'm worth $5,000. Jesse, I might as well just go buy the Dodge. I don't even know what you're saying. Okay, so what I was trying to do tell them is that my service after the sale is going to be worth more than that. Hey, Jesse, listen, focus. Shake it off. Come on. A little nervous. I know. Close me, Jesse. Okay, I understand, Eddie. I'm at $50,000. Jesse, you're at $45,000. You're at $45,000 on your truck. Match the $42,000 and we got a deal. Triggered. Where are the whistles? Hey, hey, am I right? Is this real? Yeah, that's real. Okay. It's real. Is this a real objection you guys get all the time? I don't care what you sell. There's some form of this. Am I right? Okay, so what do you do when this happens? Are bigger discounts the way to go? No. Jesse, Jesse, Jesse, Jesse, Jesse, come over here. Come over here. Show me. Okay, Jesse, so I'm here to do that. Okay. But I want to show you something. Hey, Jesse, let me ask you a question, right? Obviously, you're saying that the dodge is cheaper. Am I right or right? Yes. Yeah, Jesse, do you like cheap stuff? No. Why did you start with the dodge on the cheaper stuff? You don't even like cheap stuff, but you keep talking about cheap stuff. I've always been a Chevy man, so I went for it. I got it. Number one, if you wanted the dodge, you'd already have bought it, all right? Correct. But number two, let's talk about this. How long are you probably going to keep this truck? Two, three years, four years? Five. Five years? Okay, and you're going to be financing it? Am I right or right? Half of it. Okay, cool. So when you buy it, let me show you something, Jesse. You see this timeline? Okay. See this? This is time. This is the money. One, two, three, four, five. That's going to be the five years that you said you're going to own this truck. Am I right or right? Yes. At the end of five years, what are you going to do? You're going to trade it back in. Correct. And then you're going to buy something else. Might be the least. Okay. Wednesday last time you talked to a salesperson, he talked about the deal he was willing to make you today, and then also what it looked like when you trade it back in. Probably never until you met me. Let me show you something. So you got your dodge. Yes, sir. It's 42K. You got your Chevy. It's 45K. Now, Jesse, I get how we could get hung up on $3,000, but what it is, you've worked hard for this money, whether it's 42 or 45, you've worked hard for it. Would you agree? Yes. When you drive this dodge today off the lot at the 42 grand, do you think the dodge is going to become worth more money or worth less money? Which one? Less. That's right. Going to depreciate when you drive off the lot. There's your one. There's your two. There's your three. There's your four. There's your five. Would you agree? Yes. That's a depreciation cycle when you're going to trade it. Now, at the end of the five years, if that dodge was going to be worth $18,000, and you could see that today, that would be nice. Now, let me ask you a question. If dodge is giving $8,000 off on new dodges, what do you think that did to the people that bought them last year? You think it made their cars worth more money or worth less money? Less. That's right. And you want to purchase a dodge that's going to continually discount their market big time. So on the trade cycle, on the flip side, they're worth less money.  So with the Chevy, when you buy it, it's going to drop the same. Right. But the difference is, Jesse, because Chevy doesn't discount their vehicles like dodges, they hold better on the market. So with that being said, when you're ready to trade it back in, if it's worth $25,000, Jesse, I'm not the best at math, but if it's a $7,000 difference on the resell side and you had to pay three grand more today, you're still winning by four grand on the Chevy.  So when I hear you say that you want me to match their price, what I hear you say is that money's a real concern to you, right or right? Right. And if money's a real concern to you, don't you find yourself saving the most money with the Chevy? Yes. Thank you, Jesse. Not only will I say this today, but you better make sure I'm here doing business with you then. Is that fair? It's great, man. You guys see that? That's what a baby comes to see. That's how I'm closing. That's what I came up with. Listen. Hey, this is good. That's amazing. No, this is depreciation.  I've never done that. I've never done that. Yeah. So you're saying you're saying the more rebates...


Our work at the Boonhardt Institute is totally focused on preventive cardiology which has extended into even stroke prevention and maybe even dementia prevention because most of the organs of the body are affected by blood vessels and cardiac issues and we found that if we look at those areas of health and optimize those all sorts of health benefits occur. We started a non-profit called the Every Heart Foundation. Everybody thinks that all athletes ought to have electrocardiogram, echocardiogram and other assessments but as soon as they make that medical judgment then often we have to back off because it's just too expensive. So with our non-profit we decided to test everyone for free. Looking at the heart much like other muscles could be helpful to make sure the heart is not too thick, too stiff, too stretched as is a problem with your bicep or your tricep or your quadricep. The heart also functions better even athletically if it's not fighting against other forces from blood pressure to maladaptation of valves or walls. I think it's very exciting to have Dr. Philippon invite me to lecture in this arena that's mostly focused on musculoskeletal issues because certainly the athlete mostly is interested in bones and joints and performance and strength. This would be though in line with the conference's goal, an injury prevention.


Let's solve a question on voltage in a series LCR circuit. Here we have the RMS voltage drops across the elements in a series LCR circuit and we can see them. This is across inductor, across capacitor and across resistor. The question is to figure out the RMS value of the supply voltage that is VS RMS in the circuit. Alright, now before I get into this, why don't you pause the video and attempt this one on your own. Alright, hopefully you have given it a try. Now where do we begin to think for this one? Let's see, we have a series LCR circuit and there will be a current flowing in the circuit. This will also be an alternating current. We are asked to figure out the RMS value for the supply voltage. Now from what we know about series circuits, the source voltage that is always equal to the resultant of or the sum of the voltage across all of the components in that circuit. Right? Here we have an inductor, a capacitor and a resistor. So to find the supply voltage, what we can do is we can find the resultant of the voltage across LC and R. Now to find the resultant, to find the resultant of the voltage, we could use the search of law that is the second law KVL but it turns out that the maths for that becomes very complicated. We have differential equations and they are also second order differential equations. An easier way to find the resultant voltage, the resultant source voltage in this case in an LCR circuit is to use phasor diagrams. To find the resultant of the voltages across these three components, we can draw phasor diagrams and the resultant phasor, the resultant phasor can give us a supply voltage. So how do we draw one? Well, let's think about a reference to draw the voltage phasors. So let me draw the phasor for the current, for the current at any random angle. We can draw it at any random angle and so for this one I've just drawn it horizontally on the x-axis. Here is the current phasor. Now using our knowledge of whether voltage leads, lags or is in phase with the current, we can draw the voltage phasor of each element and the resultant of these voltages will give us a supply voltage. Since the voltage across resistor that is VR that is always in phase with the current, so we have the phasor for voltage across resistor in the same direction, in the same direction as that of current. So we have already drawn VR. Now let's think about drawing the voltage across inductor. The voltage across an inductor that leads current by 90 degrees because an inductor resists any change in current. So voltage leads the current in an inductor and how do we draw that over here? We know that it leads it by 90 degrees. So the voltage across inductor, it could look like this. It is 90 degrees ahead, it is 90 degrees ahead from the current. And voltage across capacitor, it lags the current by 90 degrees. So you can imagine that the vector for that would still be vertical, but it will be pointing in the downwards direction because this is lagging the current, lagging the current by 90 degrees. And the length of these phasors that represents the peak values that is the V0 across L, the V0 across C and V0 across R that represents the peak values of voltage drops. Now let us find the vector sum of these three vectors to find the peak value of the supply voltage. We can see that VL, the voltage across inductor and the voltage across the capacitor, they are in the opposite direction, they are opposite to each other. So we can combine them and that would be VL minus VC because VL is more than VC in this one. So the resulted vector for these two, the addition of these two vectors that will be in the up first direction. So it could look somewhat like this. This is VL, this is VL minus VC. Now we have a right angle triangle with us. So we can use the Pythagoras theorem to figure out the resultant and the resultant could be in this direction. Okay, at this point, why don't you pause the video and write an equation, write an equation for the resultant supply voltage. All right, hopefully you have tried it. So the equation would look like this. So let's go through this one. This is the source voltage, the peak value of the source voltage. This square equals VL naught minus VC naught whole square plus the peak value of the voltage across the resistor and square of that. This is using Pythagoras theorem for this triangle. Now since we are provided with the RMS value in this problem, let us try and relate the peak values in this equation to the RMS values and then solve for the RMS supply voltage. We can assume one thing, we can assume that the variation of voltage is sinusoidal. So that means we can use V peak, that is V naught. This is equal to under root 2 into VRMS, okay? And this will be true for each and every voltage drop. So for the voltage drop across the inductor, this will be VL naught that is equal to under root 2 and VRMS for the inductor and similarly for capacitor and resistor as well. So when we substitute this in this main equation, we will get something of this nature. In place of source peak voltage, we have under root 2 into the RMS source voltage whole square and similarly for inductor capacitor and even for the resistor. Now this under root 2 is the common factor over here and we can right away cancel it. When this is square, it just becomes 2 and that comes out from the bracket in each of these terms. So under root 2 just, it just gets cancelled right away. And now what remains is just substituting the values that we have provided in the question. So let's do that. Now this is equal to VL RMS minus VC RMS. So this is 220 minus 211 and whole square of this one plus VRMS whole square. So that is 215 whole square. This will come out to be equal to 46306. But this is VRMS whole square. So when we remove the square, the answer would be the under root of, that would be the under root of this number and that comes out to be equal to 215.2 volts. So this is 215.2. Now you can try more questions from the exercise in this lesson and if you are watching this on YouTube, then you will find the exercise link added in the description.


What's going on everyone Sam here with late in sports cards. We are ripping 2022 tops chrome baseball HTA jumbo four box break number 12 pick your team style got a list of our teams in our names here got adam elves got the white socks the guardians the rockies the blue jays the a's got brian s with the marlins kaleb b with the brewers danie c with the mariners denny c with the cardinals eric p with the cubs eugene t angels frankie g raise greg k yankees harper b twins pirates john f braves jonathan r metz padres thank you jonathan uh jordan i with the nationals katie t billies and tigers thank you katie matthew b's got diamondbacks orials michael r with the royals michael s with the rangers robber f astros susanne p dodgers and von b with the red socks thank you also to um took san diego uh jonathan yeah jonathan r with the the um padres as well yes john uh 1314 still coming up jonathan i appreciate that man yeah got a couple more pyc styles to this so should be fun for sure a lot of the good teams are still left uh prism jake up the ground auto is going to be luke williams there you go katie with the fillies and refractor corey c siga that pink chris bryant giants 334 out of 399 jaren diran rookie refractor zack pop is that you katie that's katie so you pull your viriling too there's a trout prism there you go angels want soda refractor going to the uh nationals that is you awesome awesome well good luck hopefully you pull you a uh nice matt viriling and other nice luke williams that'd be awesome bidal brujan base rookie elie morgan joey vado there's a shohei refractor i appreciate that thanks for jumping in got a blue ray wave coming up now i wasn't uh no i was not somebody's not thought that might have been a wander uh brandon march we've got matt manning going to the tigers blue ray wave rookie there you go katie matt manning rookie last spot mojo 142 out of 150 congrats katie taking both the auto so far brandon left we can get a torque out of this now torques are redemption so hopefully we can see some torque action brandon march rookie we've got i just spoiled the auto for you guys sorry that is brandon propper prism followed by nick ledolo teal wave uh rookie auto 146 out of 199 reds refractor manual revero rookie as a wander base rookie there you go rays sheen beaver prism refractor horre soler uh jose apre for nanotattis got pita lanza pink mini diamond 298 out of 350 for the mezz robby grossman prism max muncie auto on the uh veteran auto and then refractor col calcun that's randy rosarana the grom adam wainwright louise heel eight out of 75 yanks tim anderson jackson reitz rookie auto going back to crispy kaleb and you darvish other jackson reitz he's got to be like a one per break hit jackson reitz stuff and haze prism and refractor kyle hendrix that'll do it for box one good luck everyone here on box number two oh he's stuck together they're stuck together in a weird way uh there's a no-nil cruise on top that happened uh a few days ago on one side too uh christian yellich adam wainwright stack them up says kaleb stack up the jackson reage kaleb wants all the jackson reitz ryan haze Gavin sheets rookie we've got refractor logan gilbert on the back there jack schism jose abray ronzi contreras refractor rookie pirates knock on one none of these have been stuck together right now this is the easiest box i've ever seen there's a wander rookie i know i just jinxed myself for sure thalback jonathan india redepnir's prism rookie going to the angels and miggy on the refractor from the tigers tea grace there go katie jackson reitz uh sammy long refractor going to the uh that is the giants got luke voight as a yankie i did not know this card is in the set that's actually very funny congrats on that one yanks we got luke voight and jesson berlander uh refractor kilonzo rookie refractor brandon march nice there you go angels got a green coming up here guys green green is adolis garcia uh 74 out of 99 for the rangers uh that is a prism of alex bregman alex manoa rookie or not rookie but refractor auto going to the blue jays and match sure as a refractor of auto we got chas mccormick going to the astros on the rookie auto not numbered refractor austin meadows guys we've got another two of these coming up still 14 on the next one 14 to go on the next one awesome thank you kenzie viewer got salvi perez color match 72 out of 150 royals uh mitch hanager on the prism and eloy 14 to go a lot of good teams still left definitely something to check out if you're interested in some baseball baseball only baseball breaks of the morning right now uh there's a wander rookie we've got refractor rookie auto patin henry going to the uh marlins there you go miami riddle vocastro refractor rookie migie cabrera austin riley refractor for the braids friend and march riddle vocastro there's aziel viz and francisco perez rookie auto going to the nationals there you go gnats yellich refractor there you go kelo 14 to go tops chrome baseball p yt same style we've been doing the last two breaks we've got um four jumbo boxes you're looking for 20 autographs per break potentially more with our silver packs potentially more uh shohei and logan gilbert refractor mount castle purple lucas geolito 36 out of 250 matt olson refractor gavin sheets rookie the uh white side get we you get everything in these breaks hazer you get everything all card ship there's a couple breaks we do a couple products where we don't ship base because the base is like very either either there's way too much of it or it doesn't it doesn't have any value uh freddy mv free on the teal 42 out of 199 going to the braves kevin gaussman and jesson berlander but i would say like would you say 90 95 percent of our breaks are yeah are uh everything ships it's like for this for instance you get every single part of your team it's like bowman baseball contenders yeah football and basketball i think that's really it paper based on uh drew ellis rookie auto going to the diamond backs congrats debacks and rookie refractor brandon marsh louis robert hasus lasardo on the um prism edward cabrera rookie refractor but that's actually a pretty good idea brandon giving away base put them into like little packs and give them away on halloween the doll brew huh i know we do that for um pokemon right yeah that's oh it's bregman we've got auto is haun's kraus there you go again katie birthday mojo for katie and boba chef remember rich and sarah saying they did that in their house was like the house to go to oh yeah oh absolutely if you start doing that you are the house josh heater there you go kaleb we've got that is brandon belt 62 out of 99 on the green jersey yeah exactly kaleb legit line at its house scherzer grown adults trying to get them in i think oh yeah sending their kids in but jazz chiseled behind that is a purple max freed going to the braves 152 out of 199 freddy freeman and bachette refractor again ad cards of good lord not surprising though whit marifield christian yellow tree we've got jose al tuve hard of the city auto there you go houston congrats each town that is robber f there you go robber nice al tuve that is numbered to 25 21 out of 25 very cool love that austin riley i love those those are really cool color match too yeah exactly even better even more slept on right there brandon marsh that pop prism rookie got spencer strider refractor auto for the braves 385 out of 499 2 for 2 on striders congrats on that braves that's awesome brandon marsh like i said guys we've got another one of these coming up right after new fresh case for the next two as well uh two four boxers fresh case we are opening up redulfo cash row there's a fiddle brujan rookie j cronin how many left on that one 14 14 still on the next one by all devours that is prism refractor is christian yellow 14 to go still on the next one guys 14 to go a lot of good teams left for sure plus we are opening up a new fresh case as well uh ryan mount castle that's a pink louis seal rookie 235 out of 399 brandon marsh refractor jaren durand compactor randio rosarana lubeb and uh refractor wander franco there you go frankie frankie g baby looks pretty clean as well very nice and the wander the wander fractor uh pink alec bone for the fillies there you go again katey 348 out of 350 jake burger on the prism refractor bobby dolbeck and there he is frankie g dot bladdy jr go into the blue jays that's ronzi contreras rookie auto pirates and lindore refractor not numbered on the contreras oh no that's a trey mancini base auto going to the orials nice one there and tyler stevenson on the refractor heartless city of that is tim anderson tim anderson and dylan carlson rafael devours that's set beer on the prism we've got hosay siri rookie auto going to the ashore's ashore spot doing very well julio urias jackson reeds prism salvi refractor reese huskens paul gulchman there's a jaren durand rookie we've got wow now paul gulchman on the pinstripe auto two short prints that is number 36 out of 99 there you go cardinals who has st lewis that is denny c congrats denny refractor matt veerling purple chris bryant that is 49 out of 2 2 99 fractor nico hornar yeah it's been a very good box for sure a redulfo castro that's joe ryan on the prism we got refractor auto jake myers wow what houston killed it 83 out of 499 robber f i believe it was with the astros very nice three autos one of them being on two big short prints at 25 uh dylan carlson on the prism and refractor lube up uh all right guys let's do our silver packs got four of these see what we can get here come on baby show us the money please show us the money here uh akunya refractor not a terrible way to start cranky g taking the raise in the next one cranky cranky g baby good luck man but all brujan on the base rookie that's refractor connor wong rookie glossy ryan jordan and biden buxton come on baby come on baby who do we got here who do we got rara jackson reitz tapia and john means that'll do it for the break guys do a quick recap here we've got that is brandon belt giants uh hosei siri astros trey mencini orials ridolfo cat or ronzi contreras for the pirates uh hans kraus fillies jewellis diamondbacks francisco perez royals or um nationals excuse me that's nationals chasmikormick astros luke voit yankies max munsey dodgers jackson reitz brewers luke williams fillies jake myers refractor rookie going to the uh astros got spencer strider braves pex and henry going to the uh marlins alex manoa blue jays nick ledolo going to the um reds matt manning that is going to the um tigers we had paul goldschmidt to 99 on the pinstripe auto going to the cardinals and hosei altuvae 21 out of 25 going to the astros very cool card that'll do it for the break guys thank you again for the fill next up we've got more tops chrome let's get her filled up