Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - moshix/ASMG: The Waterloo Assember G for the IBM S/370 mainframe · GitHub
Skip to content

Repository files navigation

Hits

The University of Waterloo Assembler Level G

ASMG is a modification to IBM's level F assembler IEUASM. Extensive use was made of the program logic manual for IEUASM. The ASMG assembler permits to build larger local dictionaries (and thus assemble larger programs) than IBM's ASMF. ASMG also supports named common, and the optional support for the IBM S/360 Model 67 RPQ instructions (ie DAT).

ASMG excels in:

  • exensively reducing the time taken to for an assembly run
  • providing a batch processor for student and other small assemblies
  • producing a cross reference dictionary by generating the same information as ASM F but in many fewer pages
  • allowing the user to select optional instruction sets.

How to install ASMG

The version included here has been extensively enhanced by Dan Skomsky and patched to bring ASMG to level 27, and that includes all the known PTFs. Here is what he says:

" All target libraries are named CBT593.ASMG27A.???. Scan all JOB Streams for 'CBT593' and you will find all references to the target libraries.

I have applied various local fixes/changes/updates every here and there. Scan for my last name, 'Skomsky' to find these.

I used the UPDATE facility within Assembler G to apply all SOURCE updates except for module ASMGF1. Updates for ASMGF1 were applied manually. DO NOT TRUST ThE SEQUENCE NUMBERS WITHIN ASMGF1. I had to create the sequence numbers manually to apply theSE updates. I took the easy way out for this task. I cheated by backing into the sequence numbers from the top of thes source deck and from the ass end of the source deck. The sequence numbers then converge somewhere in the middle of the member. It ain't pretty, but it works.

All ASMG27A updates for MACROS were manually applied. There were only four (4) macros updated anyway.

During the update process of Assembler G, I moved ALL MACROS within the SOURCE and placed them into the MACLIB where they should have been all along. Duplicate MACROS were removed.

While testing various GENERATION options, I encountered Assembly time errors with some MACROS and source members. I applied local fixes to overcome these errors. Again, scan for my last name and you will see how I did this.

I have tested this code the best way I know how. It should work exactly as The University of Waterloo designed it to. But I cannot guarantee anything.

After you have configured all Job Streams for your computer, run the Job streams in the following sequence to get everthing working:

  1. MACLIB.ASMG27A.JCLA to load the MACLIB PDS.
  2. LKEDCTL.ASMG27A.JCLA to load the Linkage Editor control PDS.
  3. SOURCE.ASMG27A.JCLA to load the SOURCE PDS. This is a large file and contains 43,000 statements.
  4. ASMGBASE.ASMG27A.JCLA to Assemble all modules and load the OBJLIB PDS.
  5. ASMGLINK.ASMG27A.JCLA to create the LOADLIB PDS with Assembler G (ASMGASM). "

Documentation

Documentation on how to use this assembler can be found here: http://www.bitsavers.org/pdf/univOfWaterloo/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

Moshix, January 2025 Whidbey Island, WA

About

The Waterloo Assember G for the IBM S/370 mainframe

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages