{"id":131,"date":"2011-11-14T17:04:05","date_gmt":"2011-11-14T23:04:05","guid":{"rendered":"http:\/\/tommysprinkle.com\/txxos\/?p=131"},"modified":"2021-04-17T18:29:22","modified_gmt":"2021-04-17T23:29:22","slug":"absolute-loader-description","status":"publish","type":"post","link":"https:\/\/tommysprinkle.com\/txxos\/?p=131","title":{"rendered":"Absolute Loader Description"},"content":{"rendered":"<p>The Absolute Loader is very similar to our CARD80 program. It begins with the first IPL record containing a PSW and two CCW&#8217;s. The address to use for the Loader is specified with the equate for the symbol CLA (Card Loader Address). Here we set it to 8K but it could be changed to something else as long as it does not overlap the memory used by the object deck we are loading.<\/p>\n<pre>CLA EQU 1024*8 LOCATION TO LOAD THE LOADER\r\n*\r\n* PSW\r\n*\r\nIPLPSW  DC    X'00'         I\/O &amp; EXT Interrupts Disabled\r\n        DC    X'00'         Key=0; BC; EXT INT Disabled; SUP\r\n        DC    X'0000'       \r\n        DC    X'00'         PROG Interrupts Disabled\r\n        DC    AL3(CLA+80)   Initial Execution Address\r\n*\r\nCCW1    DC    X'02'         Read Card\r\n        DC    AL3(CLA+0)    Data Address\r\n        DC    X'60'         CC+SLI\r\n        DC    X'00'\r\n        DC    AL2(80)       Length\r\n*\r\nCCW2    DC    X'028         TIC\r\n        DC    AL3(CLA+0)    Next CCW Address\r\n        DC    X'00'         \r\n        DC    X'00'\r\n        DC    AL2(0)        Length<\/pre>\n<p>The second card contains three CCW&#8217;s to read three cards into memory.<\/p>\n<pre>*\r\nCCW3    DC    X'02'         Read Card\r\n        DC    AL3(CLA+80)   Data Address\r\n        DC    X'60'         CC+SLI\r\n        DC    X'00'\r\n        DC    AL2(80)       Length\r\n*\r\nCCW4    DC    X'02'         Read Card\r\n        DC    AL3(CLA+160)  Data Address\r\n        DC    X'60'         CC+SLI\r\n        DC    X'00'\r\n        DC    AL2(80)       Length\r\n*\r\nCCW5    DC    X'02'         Read Card\r\n        DC    AL3(CLA+240)  Data Address\r\n        DC    X'20'         SLI\r\n        DC    X'00'\r\n        DC    AL2(80)       Length\r\n*<\/pre>\n<p>The next three cards contain our executable program. As before we establish a base register and then we get the address of the IPL device (card reader) and save in R3.\u00a0 We get the address of our input buffer and store it in our Read CCW.<\/p>\n<p>Now we begin our processing\u00a0 loop by issuing a SIO to read a card.\u00a0 We wait for the I\/O to complete and then check for successful status.\u00a0 If the I\/O operation does not complete successfully we load a Wait State PSW and halt execution.<\/p>\n<p>Next we check the contents of the card we just read.\u00a0 If it is an object deck it should\u00a0 have a X&#8217;02&#8217; in column one.\u00a0 Next we check to see what type of record it is.\u00a0 For SYM, ESD and RLD records we simply ignore it and read the next card.<\/p>\n<p>When we read a TXT record we get the target data address contained in the TXT record and the data length.\u00a0 This tells us how many bytes of data to copy and where to copy it to.\u00a0 We copy the data using an executed MVC instruction.\u00a0 We can then loop back and process the next card.<\/p>\n<p>When we read an END card we simply issue a LPSW\u00a0 to load the new PSW from location zero.\u00a0 It is the responsibility of the program we just loaded to include a new PSW at location zero.<\/p>\n<p>We use the program-within-a-program technique to punch our loader deck to the card punch unit.<\/p>\n<p>[Next &#8211; Testing The Absolute Loader]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Absolute Loader is very similar to our CARD80 program. It begins with the first IPL record containing a PSW and two CCW&#8217;s. The address to use for the Loader is specified with the equate for the symbol CLA (Card &hellip; <a href=\"https:\/\/tommysprinkle.com\/txxos\/?p=131\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-page-builder-no-sidebar.php","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1CPQT-27","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=131"}],"version-history":[{"count":3,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":140,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/131\/revisions\/140"}],"wp:attachment":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}