Welcome to our presentation, Reading Guide OER for Moon of the Crested Snow, a collaborative story. We're excited to be presenting at the 2021 Open Education Conference. We are Drs. Caitlin Watson and Dr. Anna Rodriguez. We will start our presentation with a land acknowledgement and then discuss our positionalities as the authors of this OER. We will also discuss the purpose of this presentation, provide a summary of the book used in this OER, and the background of the project. This presentation will also provide an overview of the context within which this resource sits and describe the collaborative story behind the creation of it. Viewers of this presentation will have an opportunity to see parts of the actual guide and we will also model how it could be used in a classroom by engaging the audience in an asynchronous activity which can further be discussed during the live chat afterwards. We'd like to start our presentation with a land acknowledgement. Ontario Tech University, where both Anna and I work, acknowledges the land and peoples of the Mississaugas of Scugog Island First Nation. We are thankful to be welcomed on these lands in friendship. The lands we are situated on are covered under the Williams Treaties and the traditional territory of the Mississaugas, a branch of the greater Anishinaabeg Nation, including Algonquin, Ojibwe, Odawa and Potawatomi peoples. These lands remain home to a number of indigenous nations and people. We acknowledge this land out of respect for the First Nations who have cared for Turtle Island, also called North America, from before the arrival of settler peoples until this day. Most importantly, we remember the history of these lands has been tainted by poor treatment and a lack of friendship with the First Nations who called them home. This history is something we are all affected by as we are all treaty people in Canada. We all have a shared history to reflect on and each of us is affected by this history in different ways. Our past defines our present, but if we move forward as friends and allies, then it does not have to define our future. I'm Anna and I'm a settler of Portuguese descent who lives on the traditional and treaty lands of the Mississauga Anishinaabeg. I'm an interdisciplinary educator and visual artist. My research explores how underserved communities amplify their voices through creative acts of resistance, whether it be in the form of art, literature or media production. Currently, I teach graduate and undergraduate courses in the Faculty of Education at Ontario Tech University. I'm Caitlin, a Euro-Canadian settler living on Anishinaabe homeland, Williams Treaty Territory in Ontario, Canada. I am currently a faculty development officer in the Teaching and Learning Centre at Ontario Tech University. I'm also a secondary school qualified educator licensed by the Ontario College of Teachers, and I regularly teach Bachelor of Education in graduate education courses at universities across Ontario. Overall, my pedagogical and research interests focus on Indigenous settler histories and decolonization. Indigenous literature in Canada continues to grow in popularity with Indigenous-authored books and other resources increasingly taught in high schools and post-secondary classrooms in Ontario. Based on my positionality as a high school educator, as well as the conversations Anna and I have had with other educators, we realize that sometimes there is apprehension when adopting Indigenous-authored resources due to a variety of concerns, including having enough background knowledge to contextualize the resource, having to create new lesson plans, and finding appropriate accompanying resources. Given the Eurocentric biases in education, it is important that educators are prepared to include these literatures in ways that do not perpetuate colonialism. In our presentation, we describe the collaborative approach we have taken to develop an open educational resource related to supporting Indigenous literatures and educational spaces. By the end of this presentation, you will be able to assess the usefulness of this OER or some of its specific elements for your teaching and learning contexts, identify other Indigenous resources from the OER that you can implement in your context, and reflect on potential collaborations you can develop based on your own contexts. With winter looming, a small northern Anishinaabe community goes dark. Cut off, people become passive and confused. Panic builds as the food supply dwindles. While the band council and a pocket of community members struggle to maintain order, an unexpected visitor arrives, escaping the crumbling society to the south, soon after others follow. That is the synopsis that can be found on the book of the dystopian novel, Moon of the Crusted Snow, written by Wabgisha Grice, a First Nations author. This story details how an Anishinaabe First Nation copes with an unknown global event that leaves the reserve without power or a way to communicate with the outside world. The story delves into a variety of social and political themes in response to the challenges the community faces as they fight for survival during a bitterly cold winter. In November of 2018, I was reading Moon of the Crusted Snow and also doing research into OERs through my work as an instructional designer at York University. Being interested in issues of equity and education, I did a search for OERs tied to books written by Indigenous authors, and at that time I couldn't find even one for a Canadian book written by an author who is Indigenous. This led me to wonder if a lack of readily available resources such as a reading guide might hinder the adoption of a particular book in an elementary, high school, or post-secondary classroom. A 2017 study looking at the use of Canadian books in grades 7 to 12 English departments in Ontario seemed to support that idea, noting that Canadian books are not being taught in Ontario schools. The study also found that teachers will often look only at readily available resources when considering adopting a book as a class reading due to lack of funding and time to create new materials. It occurred to me after reading Bates' research that creating an open educational resource for the novel Moon of the Crusted Snow might be useful for educators. Shortly after, I contacted the novel's author to get his thoughts on this idea, and he was very enthusiastic about it, soon after we began collaborating on this project. I felt that this novel in particular would work well for this project for a number of reasons. I had worked with Wab on two different projects in the past, so there was an established relationship with the author. As well, the themes covered in the book make it an attractive one for high school or post-secondary classrooms, as dystopian themes are quite popular with youth and young adults. The book is without a doubt a satisfying read in terms of speculative fiction, however it educates as well. The story imparts information on the shared Indigenous settler history in Canada. Lessons on the impact of colonialism, land displacement, intergenerational trauma caused by the residential school system, loss of language and culture can be found throughout the book as it narrates the struggle of a community living through a global event that is unknown but has devastating consequences. The book also provides an alternative narrative to mainstream depictions of First Nations peoples by showcasing the importance of community, family and traditions throughout. In terms of the timeline for the development of this OER, the author and I began discussions on what to include in the guide in late 2018. In April of 2019, the guide was launched online as a collection of webpages and a downloadable PDF. It was well received by educators across Canada and, aside from its use in classrooms, we also heard that book clubs and adult literacy programs were making use of the guide as well. In November of 2020, Wab and I discussed updating the resource by expanding on the original themes and adding a new section connected to real-world events, as Wab had been interviewed about the similarities between his book and the global pandemic. At that time, I was working at the Teaching and Learning Centre at Ontario Tech and in December of 2020, I approached my supervisor about updating the resource and transferring it to press books, which would be a better platform for the guide. In February of 2021, I joined the Teaching and Learning Centre at Ontario Tech University. Anna shared the OER she had developed and invited me to join her in revising it. I hadn't yet read the novel Moon of the Crusted Snow, so I very quickly finished the book and started reviewing the resource Anna had developed. We met with members of Ontario Tech's Open Education Lab to discuss how they could support us in turning our work into a press books resource. Anna left the Teaching and Learning Centre not too long after I started. However, we kept in close contact and continued working on the resource. Between March and August of 2021, Anna and I used Google Docs to collaboratively develop the resource. We regularly sent sections to the Open Education Lab so they could add the content to the press books resource. Students in the Open Education Lab at Ontario Tech come from different academic and cultural backgrounds. The director of the lab has shared with us the interest that the students brought to this project because this was content they had not encountered before. And this speaks to the opportunities associated with having people from diverse backgrounds involved with the development of OERs. Over several months, we reviewed, sent edit suggestions and reviewed the content again. After the first section on land was complete, we sent it to the book's author to review. He provided a few suggestions which we forwarded to the Open Education Lab. We continued the review and revised process over several months as the Open Education Lab students came and left their summer contracts. Once complete, we gave the entire resource to the author for a final review with no edits necessary. The resource was released at the end of September 2021. And now about the OER. Users can choose to use this resource as a thematic guide based on the subject or course they are teaching, or use the guide to accompany a chapter by chapter analysis of the novel. Each theme includes an introduction which links the novel to the theme and includes a relevant creative commons image. Each theme also includes curriculum connections. The themes of the resource include the first land, which includes two sub themes, treaties and land as provider. The second theme, colonialism, includes a sub theme on residential schools. The third theme, community, includes sub themes on family and band councils. The fourth theme is gender. The fifth theme is language. The sixth theme is traditions and culture. And finally, the seventh theme is a new one we've developed, real world events, pandemic. Quotes from the author include interviews with the author where we have drawn out excerpts and linked to the source material. Quotes from the novel include short passages from the novel related to the theme. Resources include websites, videos and other materials we've collected linked to the theme. We've also developed discussion questions that can be used for class discussions or as writing prompts. We've added proposed activities. And finally, each section includes an additional reading list. At this time, we'd like to share with you an overview of the guide. From the content section, you can see all of the main themes and then our sub themes. Each theme and sub theme includes an introduction with a creative commons image. Each main theme includes curriculum connections. And then all of the themes and sub themes include different configurations of quotes from the novel quotes from the author discussion questions resources and activities. This example of land includes some quotes from the novel where we identify the page from the physical text. Discussion questions which can be used for large group small group discussion or even writing prompts. The sub theme of treaties has its introduction quotes from the novel resources where we link to websites and texts. Discussion questions and activities. We'll return to this one shortly. Land as provider as another sub theme has its introduction. Here we have relevant quotes from the author where we link to the source material and include a written transcription. You quote from the novel resources where we've even embedded videos. The end of each theme also includes an additional reading list. In some examples we have the resources divided by youth readings or adult readings in our subsection on residential schools. We've also included a much more extensive reading list. At this time we're going to turn to an activity. You can access nativeland.ca from our reading guide or by typing it into your browser.  You can type in your address and it zooms in and shows you the treaty land you live on from our land acknowledgement at the beginning. You'll remember that we are on Williams Treaty territory and this is also the land of the Inishinaabe and specifically the Mississauga. This resource includes lots of historical information and acknowledges that this is also the traditional lands of the Honoshoni and the Wendat. We welcome you to type in your address and look at the traditional indigenous territory you live on from anywhere in North America, many places in South America. They also have resources for Africa, Northern Europe, Australia, New Zealand and Asia. For those joining the live session you'll have the opportunity to share in the chat. Now that you've seen the OER we hope you have a better picture of how it could be used in a classroom. In Ontario, many school boards and schools are shifting the grade 11 English classes to ones that are focused on indigenous authors and indigenous literatures. Moon of the Crested Snow would be a great resource to use in this type of classroom. This reading guide may also facilitate the adoption of Moon of the Crested Snow in undergraduate and graduate courses. As Caitlin mentioned at the beginning of this presentation, we've heard from instructors who want to include books by indigenous authors on their reading lists. However, they are worried about teaching a book that is different from their own life experiences and as well having the time to create activities, discussion questions and other materials for a new reading. This guide may assist as the materials included are ready to be used or adapted. As well, the materials included have been vetted by various individuals which include the author of the novel. We feel this OER provides a template and we hope it inspires others to create reading guides for books not only from indigenous authors, but also other underrepresented groups that are missing from post-secondary reading lists. An important piece as well is how the collaboration that occurred during the creation of this reading guide has provided an opportunity for diverse voices and perspectives to be included in the final product. That collaborative aspect continues as we welcome feedback from users of this guide and hope to hear how it has been used in diverse teaching contexts. To see the complete reading guide for the novel Moon of the Crested Snow, please go to the following URL. We invite you to get in contact with us. You can contact me, Dr. Caitlin Watson at Caitlin.Watson at OntarioTechU.ca. And you can contact me, Dr. Anna Rodriguez at Anna.Rodriguez at OntarioTechU.ca. This concludes our presentation. We want to thank you for your interest in our project. We look forward to your comments and questions in the live chat.


Let's do some more work on my nice new brother WP1 word processor. I have a port of CPM to this machine and it boots my original plan for this thing was to use it as a Terminal for a Raspberry Pi. I could connect the Raspberry Pi up to the UART Blowing to the processor here. Sadly, this turns out not to be viable This is a very cheap Psoc 5 development board It's got a mini FPGA allowing you to wire up arbitrary logic to any of the ioports this wonderful cable and That should hopefully be all the hardware Modifications I need the next chunk of work isn't going to be happening on the workbench because I need to go and pull up The Cyprus development kit see you on the desktop so what you're looking at here is The Cyprus or rather now in Phineon since in Phineon bought Cyprus Psoc integrator development system. This is a frustrating combination of being brilliant and Being maddeningly stupid, but I will just create a new project The board we're using is the CYHC kit 049 So that's fine. We want an empty project and we're going to call this Pdaptor and put it in Psoc And you want the project name inside the workspace to be Pdaptor Okay, and that has created a new empty project We should be able to immediately build it and I will explain what this is doing later This is can actually Constructing the vera log which it's then compiling into the bit stream to program the FPGA. There we go. It's done so program and It has programmed the board. I have the board hooked up via a entertainingly ludicrous collection of USB extension cables To the desktop PC you're looking at now. I've got both the Debugger port plugged in which is what this programmed it with and a serial terminal connected to the board itself Okay, so First step you want to get the serial terminal working. So what we do is We go look through the set of components That the thing supports and we find a UART Which we drop down here onto the schematic. This is where we'll be designing the FPGA logic Note I keep saying FPGA. It's not technically an FPGA. It is something else beginning with a C whose acronym I can never remember because it sounds far too like Java mid P systems So I'm just going to call it an FPGA It's functionally very similar except smaller and a bit weirder anyway this Represents a UART Compiled into our system. We can double-click it and get Various bits of configuration. It doesn't have any inputs or outputs because the way this is set up by default It's controlled entirely by software, which is what we want. So we're going to rename that to UART Because we're only going to have one of them and you notice that even though it's set to a hundred and fifteen point two killerboard the there's a warning here that the actual board rate is Not right. This is because the clock rate at which the thing runs doesn't allow the The UART to generate the appropriate board rate accurately enough. So we need to fix that So we go over here. That's the wrong one to clocks This shows all the clocks used on the system We have the standard ones here in yellow and one extra clock down here that was created by the UART so Yeah, the the clock used by the UART here you can see it wants 1.382 megahertz, but it only got 1.412 Because it's limited to a set of dividers Based on the system clock. So let's change the system clock. Do that. We double click here This now shows us the Clock tree. This is how all the various clocks are generated The this particular board The clock is generated from this thing here called an imo Presumably that stands for something something oscillator It's not particularly accurate. You can see here plus or minus 2% On the more expensive board Because it's got usb on it. It needs an accurate 48 megahertz clock for the usb But this one doesn't so this is what we get And by default it runs at 24 megahertz. So let's fire up windows calculator This is our clock rate now. We're going to keep doubling it Until we get a number in about the range we want So it's 29 megahertz 58.9 that's too high. This thing only goes up to 48 It's the other board that goes up to 80. So let's try 29.491 Okay Now we can see here that These clocks now match much more accurately So if you go back to the schematic I want 115.2. It gets 115.1. That is good enough Okay So now let us just build it This is going to generate the code for the urt which Uh, it looks like it's already done it, which you can actually see here in the ide Uh, we're not going to touch any of this but we need to build it to generate the source code to do the next bit Which is to actually like call things so Because we've added a uart component we need to initialize it Like so and then here we can put in our code So we want this is why I wanted the ide to know about the uart device Uartput string Hello world Okay So build again done Program And here is the output through the serial terminal Excellent That shows that our system actually works now Uh, there's a thing here called the resource meter that shows What's what resources are actually in use? And you can see that we've used one out of two serial blocks These are dedicated components for doing serial stuff We can build a uart from actual logic. In fact, there's got this one here. This is a simple Transmit only uart intended for debugging Uh, if we were to build this Uh, it will then generate this in verilog Compile it to the bitstream Then compile all the source code again Which takes a while there we go And here in the resource meter we can see that We are still only using one serial block but We That's interesting I would expected it to use some logic blocks Okay, uh, I reckon that what it's probably done is notice that i'm not referring to this anywhere and has optimized it out Never mind Anyway, this is the main resource we're looking for here this shows the uh the usage of the fbj block and There's it's pretty small. We can't put too much in it So let us start actually talking to the outside world So let's shift this out of the way now our device is Plugged in to the brother word processor by various ports like copied down So we want to Add some components to the schematic to represent the input and output ports We have The address input which is going to be eight bit wide We've got data input and output, which is eight pin eight bits wide And we have the control lines of which there are three So We call this address pins number of pins eight Uh display as a bus means that it emits a eight bit wide wire rather than eight one bit wide wires And this is the data pins now this is Going to be an input and an output Because we need to be able to read pins and write Yeah, we need to be able to read and write data So we have to be able to sense what's on the bus as well as assert our own values to the bus There does have this bidirectional mode here But this is subtly different from enabling input and output. So we're going to do this instead Uh, if you have them both enabled at once you want to turn on output enable here This generates a Uh a second input These are this thing here represents the inputs To the pin component which will be output from the board This is the output from the component which is input to the board This will enable whether we are Outputting or not and again, we want that to be a bit wide display as bus and control pins These are an input and there are three of them Um, in fact, I'm not going to do that I'm going to put three of these in so that we can name them different things So our three control lines are read write and io enable right We now want to assign these actual pins on the chip And I did note down what they're all connected to The uart has been automatically assigned to the correct pins Uh pin zero and one of port four Uh Let me get want to lock those to prevent them from being reassigned Uh now Read pin is on 1.6 Right pin is on 1.5 And io is on 1.7 And it's automatically locked those The data pins Which is these are eight bits wide these are on port two All of them and the address pins are on port Port zero We even have a Recent number of spare pins Some of them are reserved for things like debugging and programming But there's enough space here to add more functionality to this thing when we're done with it assuming it works, of course Okay So let us build this Four errors, um Okay, we need to wire stuff up So Let's just wire these up to hardcode these to zero Don't think that's going to work. Let's just try that Because this I think is going to be yeah, this is a one bit wide zero. So we actually want the Constant generator digital constant And yes, oh x f f is correct so The reason why I want to build it is data pin zero Cannot be configured for output enable or input output synchronization I'm connected to ursebs urcts terminal This is going to be because there is special logic attached to the to port two Okay, let's try just swapping these So the address pins are now on port two and the data pins are on port zero Let's see if that makes it happier cannot be configured for output enable or input output synchronization That's interesting It is connected. Oh, yes, and we also want to Set the modes here The way the The way the bus is set up on the brother computer Is that the lines or float high they're connected to five volts via a large resistor So that given no other control on the line They will end up at five volts Then in order to apply a signal a transistor in one of the components such as a memory chip will connect the line to ground So you end up with current flowing from five volts through the resistor And then through the transistor to ground So we want to mimic this The reason why is it means you can have multiple devices attached to the same uh The same bus line Provided only one of them is trying to drive the The line Then no current is consumed because then The line is connected to five volts via the resistor and then not anything else But any device can ground the line by simply turning on its transistor And Yeah, I think we can leave that as is Let me just do the same thing for this one. This is the really important one Because this is input and output These are Inputs so the drive mode shouldn't matter and build as you may be able to tell This is no longer The scripted part of this video Okay, it Really doesn't like me using port zero port one is in use by the iopins port three is Difficult to use because it's got the software Uh, it's got the j tag lines on it Um I have seen this before there's a workaround. I can't remember what it is. So I'm just going to go away and look that up I made it work What was needed was to change the constant value being fed to the output enable line from zero to a one Apparently if you set it to a zero, then the optimizer gets invoked and it removes various critical bits of the Data pin logic and then you get that meaningless error message This is one of the problems with this tool when it works. It's magic when it doesn't it's incomprehensible It's full of weird rough edges like If in verilog you try to use a tristate pin you get Completely meaningless gibberish turns out this verilog dialect doesn't support tristate which is why we're using a Separate input and output lines with output enable because you know you just can't do that Anyway, it now builds and runs and the text messages change here So let's see if we can do something a bit more interesting with this So We need to configure this to actually point we need to Configure the cpu to be able to read what's coming out. So we're going to do that with a Status register. This is a value that can be read by the cpu So display as bus. This is going to be address status Okay, now it needs a clock and for that we are going to use the System clock Yep hf clock high frequency clock And then we just need to wire this up here So now the cpu can read this register And it will sample the contents of the data bus and what the data bus we wanted the address bus like so And let's put another one in the status and this is going to be One bit wide And again, it needs a clock Which is again going to be hf clock. Okay now We want the Uh the Data sheet for the processor. Did I remember to download that? Yes Here it is What you're looking at here is the the bus timing graph for a i o operation This half has got the read cycle and this half has got the right cycles. So We're going to do reads for the time being. It's just to Make sure everything is hooked up in the right place the way a read works Is the cpu will assert i o e and r d and On the bus assertion means driving low When it goes low that is a signal for the hardware to sample the address of the address bus and Place the data on the data bus A certain time later Uh and leave it there until i o e and r d are unasserted So these So a read operation happens when i u e and r d are both low So Internally this thing operates with active high So the first thing we want to do is Invert i o e and r d And then we want an and And wire that up Okay We're ignoring wr for now. We're also ignoring the data for now So the cpu can now read control status and that will tell it It'll give a one bit value that will tell it whether a read operation Whether a read i o operation Is in action So what we do is we go to our source code And we're going to do forever. We want to Oh, yeah We want to build it this is Building it will then generate the source code for the two status registers to which will Make it much easier to access them because the id will know about symbols. Okay So what we're going to do is wait for control status To become non-zero that means a read i o operation is an access Then we're going to Read the address bus Then we are going to Uh Do we have s printf We seem not to have s printf. Okay. We want to try and print the address to the console. So let's Okay This is a Classic quick and dirty technique for printing a hex digit There are better ways to do it, but this is pretty fast and it's not like we are Low on flash space So print the high nibble print the low nibble so print x8 address there you are put char printed space now we're going to wait until the Uh, the control line is zero, which means that the i o operation has finished and if this works We should have a bus snooper which is capable of logging All the i o read operations that the computer is doing Uh, it'll just dump the address. We're just we're not actually doing this to like use it in real life I just want to verify that everything is wired up correctly So, uh, yeah, yeah the resource meter you can see that our logic here is used up Two macro cells and one unique peter and whatever they are Status cells are these things you can have up to four of those control cells will get to in a bit Now I don't actually know whether this will work The issue is the timing It takes time for the cpu to do things This is of course running at 39 29 megahertz which is a lot faster than the hd64 and 80s For I think megahertz And each operation takes multiple clock ticks But we still have to get through the entire serial write operation in one two three and a bit hd64 and 80 clock cycles So I don't know if this will actually if it's actually fast enough to do that I'm hoping it will because this Should be fast. It should just dump the values into the output buffer and then they'll get emitted Asynchronously maybe But let's program this And of course nothing is happening because it's just seen gibberish because the computer's turned off So I will go and turn it on Well, I don't know if you heard that but it made a very bad noise when I turn the computer on This suggests that Uh, our wiring is incorrect And we are doing something horrible to the i o Lines thus causing the computer to Keep crashing While it's running Which is annoying. Oh, I reckon it's this the data pins I think this is probably trying to assert a one onto the bus But as set to open drain drives low asserting a one onto the bus should do nothing Um Tell you what let's just Disable that And build Because I wonder if i'm actually wrong about open drain drives low At least this is the only output pin. So these should be safe Program, okay, and let's give that another go Nope that is in fact not working I have figured out the problem what i'm looking at here is the documentation for the CYHC kit 049 board itself And it turns out that there is a capacitor on Pin 1.7 So this is the one that I chose for the i o enable line. That means that whenever this is plugged in Really weird things happen to the system bus That's really annoying. There's actually two more um What I have done in the past is to simply remove the capacitors from the board I think what I'll do in this case is to just use some more pins. We do have lots after all That means I don't have to modify the board itself Here it is actually labeled on the PCB So I'm going to have to do some rewiring and then I will come back again The three control lines are now wired up to port 3.4 0.5 0.6. My first choice was 3.0 0.1 and 0.2 Unfortunately, it turned out that these are in use by the the programmer so Yeah, anyway, you notice that we are actually getting lots of spammy output Because it's working. This is recording what all the i o read accesses are The computer is actually running and I was able to reprogram it and it continued to run which is great This shows that This approach does actually seem to be working Okay, so let's turn the data pins back on again even though they're not connected to anything And that they should be on 2 Correct my notes. Yep, that is correct program So it rebuilds and Eventually it rebuilds very slowly. It's a single threaded compiler And we still have stuff coming out. It's all the same stuff. Excellent So what are we actually using? We're using About three quarters of our GPIO pins one serial block A miniscule amount of FPGA resources And nothing else. Oh, yeah, you notice down here This chip's got analog stuff in it. It's not as flexible as the digital But it's got some configurable pins some op amp some adc stuff like that None of it's actually enabled. So we could actually like use this to do things like I don't know Measure the voltage of the brother word processors bus maybe I mean I don't think we've got any use for the analog stuff, but it's Really nice to have Okay, let's actually start work on the real thing So we nuke all of this because we're not going to do it in discrete logic and Come on delete delete delete We're going to write this in verilog because it's actually easier to do in verilog So to do that we select the project right click add Add Add symbol component I can never remember where things are Add components item. Here we go Symbol wizard Right This is going to create a new thing that we can put onto the schematic And it's going to be backed up by some verilog code that we're going to actually want to write. So What's this going to be? This is going to be our decoder Uh, well our bus interface more accurately. So we are going to have Uh data input Data output Address input IoE input Read input Write input These are connecting to the external bus Uh, we also want a output enable Which will be connected up to the data pins We are going to want to have a system clock because lots of things need a system clock And then we're going to want the things that we're actually going to wire this up to So, uh I'm going to put those in later. I think So this has defined our Uh Component it needs a This is just a drawing tool So we need a bit of Manual configuration, that's a bus That's a bus. Let's put that the right way round That's a bus And this is a clock Uh I have seen, um arrows drawn to indicate it's a clock, but I'm not going to bother with that Uh Go to properties. Can we change the block name? No, we can't that's I'm not actually sure that has done what I wanted it to But anyway, let's go to Generate fairy log This is going to be Yeah, that's all wrong. That's annoying. Okay, let's Here we go. We want to add it here And we want to set the name here Create new There we go. Now it's called bus interface and it's shown up next to our design. Okay, that was annoying Data read Address read IO enable Read Write clock Data write Outputs enable these are digital outputs Yep Set these to be Buses like so Okay Generate fairy log bus interface dot v Right So this is the chunk of fairy log that is representing that component So the ci sim here is the Symbol definition This is the fairy log Here is our schematic. So we go over to here to Not that one Search for the bus interface component, which is here And we plonk that down Onto our schematic and Let's just do some Rearrangement just line things up a little neatly and Wiring so address IOE read write We want our clock Nearly everything Fairy log related wants a clock Find out why later Unfortunately that's not showing up as a bus Why is that not a bus? That's a bus I didn't save it. That's why Yep, okay. Now it's a bus Uh, right Output from the data bus Goes to data read Output from the bus interface Goes to data out And the output enable Line Followed it Okay, that should be all the wiring that is needed. So we should be able to build that We're going to be adding some more stuff apart from anything else Yeah Uh, the outputs aren't there is no fairy log to define what these are therefore it's unhappy So let us Write some code So this looks like a programming language, but it really isn't very log Is a way to define a set of equations that get turned into logic So For example, we want to say that OE is always going to be zero output enable disabled And Likewise data write is going to be a A eight bit wide zero constant now this will probably not build Because setting OE to zero is going to cause the Uh Seems that loading the analog editor makes me think makes it think that we're using analog. Here we go We get the same error again because OE here is a zero So let's just set that to one for now. We can't program this or it will crash the board and It builds okay, so Let us define A oh, yeah, and our actual source code is all wrong. So what we're going to do Well, we can define a few uh Simple equations so that we know that the cpu is reading when Read is False And io enable is false so likewise See the cpu is writing when we have write and io enable So we want to enable the output line only Only when the cpu is wanting to read data so this Whenever the cpu tries to read any ioport It will enable the output and a certain zero that will certainly crash the board Because we don't want to Uh We don't we only want to respond to the address range that we care about So let's do this with um So let me think Actually, this is to start with let's just do this So if the address lines are set to o x 40 Then now we should have We should have an error Oh, yeah, too much Uh too much c This is the syntax for hex constants eight bits wide hexadecimal four zeros the data I picked four zero because the internal peripherals for this thing Uh appear at zero to three f i've noticed in fact, we should be able to see here That there are a number of other peripherals. You can see it's mostly reading from fd But it's also looking at places like nine b eight six six zero, etc But it doesn't appear to be trying to read from four zero So i'm going to take a wild guess that That address is not used So this should If it builds work So we have slightly more complicated logic Who's we've used a tiny amount of the flash Not a lot of ram most of the ram is actually Occupied by the stack and the heap and we're not using a heap Oh, no, it's not. Sorry. The heap is being reduced to 128 k But I thought it was more because I thought this thing a 32 k around but it doesn't Anyway, that's lots But we should be able to program this Actually, let's change this to a memorable Number so Program and wait for it to build And it's programmed and now we head over to the board Okay, here I am at the workbench with the thing running. It's booted up into bbc basic It turns out that programming the board doesn't crash the computer But if the board is plugged into the usb Then the floppy disk drive doesn't work Which is weird. I think that what we've got is like ground loop stuff causing noise Which is interfering with the ability to read the floppy disk So I've unplugged it from the usb. The board here is now driving the The psoc board So we should be able to just do print Get hex 40 and see what comes out 72 Uh, let's do that again, but in hexadef small 40 48 um That is not the number that's supposed to come out So for one is still returning port for one is still returning ff, which is what I would expect 48 Okay Yeah, let's go back to the let's plug this in actually And the computer still runs Let's go back to the desktop and do some experimentation So I think I know what's going wrong Let me How do you work this stupid thing programmer? Here we go hex 48 It's not that I actually thought this would be This would come out as 5a Because I think that I don't know whether the value on the bus is supposed to be inverted or not I think not from looking at the Looking at these Problem solved I was using the wrong drive mode for the data lines So it was asserting bad data onto the bus Setting it to uh Our resistive pull-up Meant that I now get correct data. So I am performing a get I have this little program here And through the snow you can see it is actually Returning 5a, which is the right value Of course, I still went through and traced all the data lines before looking at that Because you know, it's more work that way. Anyway back to the desktop