{"id":2,"date":"2021-01-07T14:47:24","date_gmt":"2021-01-07T14:47:24","guid":{"rendered":"http:\/\/www.vk2sja.org\/piffle\/?page_id=2"},"modified":"2021-01-23T06:07:21","modified_gmt":"2021-01-23T06:07:21","slug":"pisc","status":"publish","type":"page","link":"http:\/\/www.vk2sja.org\/piffle\/pisc\/","title":{"rendered":"PISC"},"content":{"rendered":"\r\n<p>\u00a0<strong>PISC &#8211; (Pathetic Instruction Set Computer)<\/strong><\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" class=\"wp-image-361\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1470.jpg\" alt=\"\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1470.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1470-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1470-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>This is my version of <strong>PISC<\/strong> an educational computer designed by Brad Rodriguez. The entire computer and CPU are scratch built using only standard TTL integrated circuits. The original v1.0a design can be found Brad&#8217;s website here:-<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/bradrodriguez.com\/papers\/piscedu2.htm\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/bradrodriguez.com\/papers\/piscedu2.htm<\/a><\/p>\r\n\r\n\r\n\r\n<p>My enhanced 1.0c version adds some additional functionality not found in the original.<\/p>\r\n\r\n\r\n\r\n<p>My PISC 1.0c version at a glance\u2026<\/p>\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1477.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-367 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1477.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1477.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1477-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1477-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>16 bit TTL CPU.<\/li>\r\n<li>4 x 74181 ALU IC&#8217;s tied together, each looking after 4 bits for 16 bits of computation in a single cycle.<\/li>\r\n<li>256 Kilo-<strong>words<\/strong> of memory, 128k EEPROM and 128k RAM. Memory is bank switched into 4 x banks of 16K x 16 bit words.<\/li>\r\n<li>Directly addressable memory space is 64K x 16 bit words.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1475.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-366 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1475.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1475.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1475-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1475-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>Each instruction (operational) code is only 16 bits wide. With nearly all control signals being horizontally encoded in only 16 bits. There is NO microcode or microcode sequencer!<\/li>\r\n<li><em>I did mention that PISC is a 16 bit machine?<\/em><\/li>\r\n<li>The machine only has two CPU flags, EQ (Equality) and CY (Carry). In practice I have not found this to be problem while programming.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1484.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-371 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1484.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1484.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1484-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1484-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>The system runs at 4 MHz with one wait state introduced for slower 8 bit I\/O devices.<\/li>\r\n<li>The machine operates in two distinct cycles, Fetch and Execute. So the effective time spent executing program code is one half of the 4 MHz clock i.e 2.0 MHz. The other half is spent executing the fetch instruction for the next opcode.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-529 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02.png\" alt=\"\" width=\"1059\" height=\"676\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02.png 1059w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02-300x192.png 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02-1024x654.png 1024w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02-768x490.png 768w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-02-470x300.png 470w\" sizes=\"auto, (max-width: 1059px) 100vw, 1059px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>I guess it would be fair to characterize PISC as an extreme example of a RISC style architecture?<\/li>\r\n<li>There is a 7 slot 16 bit master bus.<\/li>\r\n<li>A four slot CPU internal bus (a 50 pin SCSI cable) that ties the cards making up the CPU together.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1481.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-370 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1481.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1481.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1481-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1481-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>Additionally there is a 7 slot 8 bit I\/O peripherals bus.<\/li>\r\n<li>A single shared interrupt is supported for I\/O peripheral cards with card priority determined by the slot it is plugged into.<\/li>\r\n<\/ul>\r\n\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1491.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-376 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1491.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1491.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1491-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1491-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<p>There are 8 x 16 bit registers (R0..R7):<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Register R7 is dedicated to functioning as the Program Counter (PC). Software can write to R7 and it will then auto increment on each Fetch cycle.<\/li>\r\n<li>Register R6 is used to hold the Interrupt Vector and during an Interrupt Service Routine (ISR) it acts as the Program Counter. It can be used as a general purpose register if Interrupts are disabled.<\/li>\r\n<\/ul>\r\n\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-528 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01.png\" alt=\"\" width=\"1059\" height=\"676\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01.png 1059w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01-300x192.png 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01-1024x654.png 1024w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01-768x490.png 768w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-01-470x300.png 470w\" sizes=\"auto, (max-width: 1059px) 100vw, 1059px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>Register R5 is used to implement a system Stack in software. So it holds the current Top of Stack pointer (TOS) address.<\/li>\r\n<li>Register R4 is used internally by my &#8220;hacked-together&#8221; home brew Assembler, as a general purpose &#8220;scratch pad&#8221; variable.<\/li>\r\n<li>This leaves R0 to R3 truly free, as general purpose registers for programmers.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1489.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-374 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1489.jpg\" alt=\"\" width=\"480\" height=\"640\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1489.jpg 480w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1489-225x300.jpg 225w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>The system is little endian.<\/li>\r\n<li>The stack grows UP! An unusual choice I know, and it could easily have been done either way. The stack runs into I\/O space at the top of memory which causes a NMI. So any stack overrun is captured.<\/li>\r\n<li>A Shift Register board adds the following shift operations:\r\n<ol>\r\n<li>Simple bit-wise Right Shift (this logic function is missing from the 74181 ALU).<\/li>\r\n<li>Arithmetic Right Shift<\/li>\r\n<li>High order 8 bit for Low order 8 bit swap (which makes dealing with 8 bit byte values much easier! :-).<\/li>\r\n<\/ol>\r\n<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\">\r\n<figure class=\"wp-block-media-text__media\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-538 size-full\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1.png\" alt=\"\" width=\"1059\" height=\"709\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1.png 1059w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1-300x201.png 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1-1024x686.png 1024w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1-768x514.png 768w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/PISCMon-05-1-448x300.png 448w\" sizes=\"auto, (max-width: 1059px) 100vw, 1059px\" \/><\/a><\/figure>\r\n<div class=\"wp-block-media-text__content\">\r\n<ul class=\"wp-block-list\">\r\n<li>Input\/Output devices are memory mapped from $FF00 to $FFFF<\/li>\r\n<li>Operational I\/O devices include a 2651 RS232 serial port and a 7-Seg LED with keypad control panel interface.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-style-default\"><a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1506.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-383\" src=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1506.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1506.jpg 640w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1506-300x225.jpg 300w, http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/web_IMG_1506-400x300.jpg 400w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p>Currently my PISC is programmed (cross platform) using a PC in either an Assembler or a Pascal like language derived and extended from PL\/0 which I call PL\/0+. With most sincere gratitude to Professor Niklaus Wirth! &#8211; &#8220;Algorithms + Data Structures = Programs\u201d (1975). It was simple enough for someone without a Computer Science degree to understand and powerful enough to do something useful after some simple extensions.<\/p>\r\n\r\n\r\n\r\n<p>Program machine code (or byte-code in the case of PL\/0+) can be uploaded to the machine via the serial port using a modified version of the Intel hex file format. The loader being part of the PISC Monitor.<\/p>\r\n\r\n\r\n\r\n<p>Both my PISC Assembler and PL\/0+ language are written in Free Pascal.<\/p>\r\n\r\n<ol>\r\n<li>Sample assembler code here: <a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/pmon-dev.asm_.txt\">pmon-dev.asm<\/a><\/li>\r\n<li>Assembler listing file for the source above: <a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/pmon-dev.lst_.txt\">pmon-dev.lst<\/a><\/li>\r\n<li>Sample pl\/0+ program here: <a href=\"http:\/\/www.vk2sja.org\/piffle\/wp-content\/uploads\/2021\/01\/trek.pl0_.txt\">trek.pl0<\/a><\/li>\r\n<\/ol>\r\n\r\n<p><a href=\"http:\/\/www.vk2sja.org\/piffle\/2021\/01\/15\/pisc-addendum-and-erratum\/\">PISC \u2013 Addendum and Erratum<\/a><\/p>\r\n\r\n\r\n\r\n<p><a href=\"http:\/\/www.vk2sja.org\/piffle\/2021\/01\/16\/pisc-glaring-deficiencies\/\">PISC \u2013 Glaring Deficiencies<\/a><\/p>\r\n<p><a href=\"http:\/\/www.vk2sja.org\/piffle\/2021\/01\/21\/pisc-conditional-jumps\/\">PISC &#8211; Conditional Jumps<\/a><\/p>\r\n<p>More coming soon&#8230;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>\u00a0PISC &#8211; (Pathetic Instruction Set Computer) This is my version of PISC an educational computer designed by Brad Rodriguez. The entire computer and CPU are scratch built using only standard TTL integrated circuits. The original v1.0a design can be found &hellip; <a href=\"http:\/\/www.vk2sja.org\/piffle\/pisc\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":363,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":45,"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":584,"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/pages\/2\/revisions\/584"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/media\/363"}],"wp:attachment":[{"href":"http:\/\/www.vk2sja.org\/piffle\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}