ZSeries/Part 3: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: ZSeries/Part 3
| Old | New | Line | |
|---|---|---|---|
| 1 | + | *[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]] | |
| 2 | + | ||
| 3 | + | This continues the list from part 2 of an examination of every unit in the compiler and where changes/additions need to be made for the addition of a new CPU and/or operating system environment. | |
| 4 | + | ||
| 5 | + | # Units I will have to create | |
| 6 | + | ||
| 7 | + | ## Unit i_vse | |
| 8 | + | ||
| 9 | + | ||
| 10 | + | *Called from: **compiler.pas**, includes **fpcdefs.inc**, no called units noted* | |
| 11 | + | ||
| 12 | + | This will be related to use of the compiler under one of the standard IBM operating systems, including VS/1, VM, CMS, or possibly as a program running on the CICS transaction monitor. More on this later. | |
| 13 | + | ||
| 14 | + | ## t_s370.pas | |
| 15 | + | ||
| 16 | + | (The cross-compiler instructions say I'll need this. It will be in the **systems** subdirectory. Will figure out later.) It appears to be used for running the support programs such as the assembler and the linker. | |
| 17 | + | ||
| 18 | + | # Other files | |
| 19 | + | ||
| 20 | + | From the description for porting the compiler, a few other files have to be edited. | |
| 21 | + | ||
| 22 | + | - utils/fpcm/fpcmmain.pp - add a new entry at the end of TCpu and TOs, near line 85: | |
| 23 | + | ||
| 24 | + | ` TCpu=(`\ | |
| 25 | + | ` c_i386,c_m68k,c_powerpc,c_sparc,c_x86_64,c_arm,c_powerpc64,c_avr,c_armeb,`\ | |
| 26 | + | ` c_armel,c_mips,c_mipsel,c_mips64,c_mips64el,c_s370`\ | |
| 27 | + | ` );` | |
| 28 | + | ||
| 29 | + | ` TOS=(`\ | |
| 30 | + | ` o_linux,o_go32v2,o_win32,o_os2,o_freebsd,o_beos,o_haiku,o_netbsd,`\ | |
| 31 | + | ` o_amiga,o_atari, o_solaris, o_qnx, o_netware, o_openbsd,o_wdosx,`\ | |
| 32 | + | ` o_palmos,o_macos,o_darwin,o_emx,o_watcom,o_morphos,o_netwlibc,`\ | |
| 33 | + | ` o_win64,o_wince,o_gba,o_nds,o_embedded,o_symbian,o_nativent,o_iphonesim,`\ | |
| 34 | + | ` o_wii,o_s370`\ | |
| 35 | + | ` );` | |
| 36 | + | ||
| 37 | + | About line 81, add the new item to these entries: | |
| 38 | + | ||
| 39 | + | ` CpuStr : array[TCpu] of string=(`\ | |
| 40 | + | ` 'i386','m68k','powerpc','sparc','x86_64','arm','powerpc64','avr','armeb',`\ | |
| 41 | + | ` 'armel', 'mips', 'mipsel', 'mips64', 'mips64el','s370'`\ | |
| 42 | + | ` );` | |
| 43 | + | ||
| 44 | + | ` CpuSuffix : array[TCpu] of string=(`\ | |
| 45 | + | ` '_i386','_m68k','_powerpc','_sparc','_x86_64','_arm','_powerpc64','avr',`\ | |
| 46 | + | ` '_armeb', '_armel', '_mips', '_mipsel', '_mips64', '_mips64el','_s370'`\ | |
| 47 | + | ` );` | |
| 48 | + | ||
| 49 | + | ` ppcSuffix : array[TCpu] of string=(`\ | |
| 50 | + | ` '386','m68k','ppc','sparc','x86_64','arm','ppc64','avr','armeb', 'armel',`\ | |
| 51 | + | ` 'mips', 'mipsel', 'mips64', 'mips64el','s370'`\ | |
| 52 | + | ` );` | |
| 53 | + | ||
| 54 | + | ` OSStr : array[TOS] of string=(`\ | |
| 55 | + | ` 'linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd',`\ | |
| 56 | + | ` 'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx',`\ | |
| 57 | + | ` 'palmos','macos','darwin','emx','watcom','morphos','netwlibc',`\ | |
| 58 | + | ` 'win64','wince','gba','nds','embedded','symbian','nativent',`\ | |
| 59 | + | ` 'iphonesim', 'wii','vse'`\ | |
| 60 | + | ` );` | |
| 61 | + | ||
| 62 | + | ` OSSuffix : array[TOS] of string=(`\ | |
| 63 | + | ` '_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd',`\ | |
| 64 | + | ` '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx',`\ | |
| 65 | + | ` '_palmos','_macos','_darwin','_emx','_watcom','_morphos','_netwlibc',`\ | |
| 66 | + | ` '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent',`\ | |
| 67 | + | ` '_iphonesim','_wii','_vse'`\ | |
| 68 | + | ` );` | |
| 69 | + | ||
| 70 | + | And then this huge table is changed to the following: | |
| 71 | + | ||
| 72 | + | ` { This table is kept OS,Cpu because it is easier to maintain (PFV) }`\ | |
| 73 | + | ` OSCpuPossible : array[TOS,TCpu] of boolean = (`\ | |
| 74 | + | ` { os i386 m68k ppc sparc x86_64 arm ppc64 avr armeb armel mips mipsel mips64 misp64el, s370}`\ | |
| 75 | + | ` { linux } ( true, true, true, true, true, true, true, false, true, false, false, true, false, false, true),`\ | |
| 76 | + | ` { go32v2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 77 | + | ` { win32 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 78 | + | ` { os2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 79 | + | ` { freebsd } ( true, true, false, false, true, false, false, false, false, false, false, false, false, false, false),`\ | |
| 80 | + | ` { beos } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 81 | + | ` { haiku } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 82 | + | ` { netbsd } ( true, true, true, true, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 83 | + | ` { amiga } ( false, true, true, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 84 | + | ` { atari } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 85 | + | ` { solaris } ( true, false, false, true, true, false, false, false, false, false, false, false, false, false, false),`\ | |
| 86 | + | ` { qnx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 87 | + | ` { netware } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 88 | + | ` { openbsd } ( true, true, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 89 | + | ` { wdosx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 90 | + | ` { palmos } ( false, true, false, false, false, true, false, false, false, false, false, false, false, false, false),`\ | |
| 91 | + | ` { macos } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 92 | + | ` { darwin } ( true, false, true, false, true, true, true, false, false, false, false, false, false, false, false),`\ | |
| 93 | + | ` { emx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 94 | + | ` { watcom } ( true, false, false, false ,false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 95 | + | ` { morphos } ( false, false, true, false ,false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 96 | + | ` { netwlibc }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 97 | + | ` { win64 } ( false, false, false, false, true, false, false, false, false, false, false, false, false, false, false),`\ | |
| 98 | + | ` { wince }( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false),`\ | |
| 99 | + | ` { gba } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false),`\ | |
| 100 | + | ` { nds } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false),`\ | |
| 101 | + | ` { embedded }( true, true, true, true, true, true, true, true, true , false, false, false, false, false, false),`\ | |
| 102 | + | ` { symbian } ( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false),`\ | |
| 103 | + | ` { nativent }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 104 | + | ` { iphonesim }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 105 | + | ` { wii } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false, false),`\ | |
| 106 | + | ` { vse } ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, true)`\ | |
| 107 | + | ` );` | |
| 108 | + | ||
| 109 | + | I compiled PP under Lazarus using parameters **-dwin32 -di386** and it compiles without error, so the changes have not damaged the original compiler. The next thing to do is to see what happens when trying it with **-ds370 -dlinux** or **-ds370 -dvse** and see if it fails, crashes or just does nothing. | |
| 110 | + | ||
| 111 | + | It does nothing. It compiles okay with both of these. Of course, the question now is where it would go to start code generation. That will take a while. | |
| 112 | + | ||
| 113 | + | ||
| 114 | + | *[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]] | |
| 115 | + | ||
| 116 | + | --- | |
| 117 | + | *From the Free Pascal wiki, page "ZSeries/Part 3", as it stood on 2013-04-04 after a change by Jwdietrich, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 118 | + | Category: High-performance computing | |
| 119 | + | Category: Mainframes |
