ZSeries/Part 3: what changed
Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | 1 | *[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]] | |
| 2 | 2 | ||
| 3 | 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 | 4 | ||
| 5 | 5 | # Units I will have to create | |
| 6 | 6 | ||
| 7 | 7 | ## Unit i_vse | |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | *Called from: **compiler.pas**, includes **fpcdefs.inc**, no called units noted* | |
| 11 | 11 | ||
| 12 | 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 | 13 | ||
| 14 | 14 | ## t_s370.pas | |
| 15 | 15 | ||
| 16 | 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 | 17 | ||
| 18 | 18 | # Other files | |
| 19 | 19 | ||
| 20 | 20 | From the description for porting the compiler, a few other files have to be edited. | |
| 21 | 21 | ||
| 22 | 22 | - utils/fpcm/fpcmmain.pp - add a new entry at the end of TCpu and TOs, near line 85: | |
| 23 | 23 | ||
| 24 | - | ||
| 25 | - | ||
| 26 | - | ||
| 27 | - | ||
| 24 | + | ```text | |
| 25 | + | TCpu=( | |
| 26 | + | c_i386,c_m68k,c_powerpc,c_sparc,c_x86_64,c_arm,c_powerpc64,c_avr,c_armeb, | |
| 27 | + | c_armel,c_mips,c_mipsel,c_mips64,c_mips64el,c_s370 | |
| 28 | + | ); | |
| 28 | 29 | ||
| 29 | - | ||
| 30 | - | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - | ||
| 34 | - | ||
| 35 | - | ||
| 30 | + | TOS=( | |
| 31 | + | o_linux,o_go32v2,o_win32,o_os2,o_freebsd,o_beos,o_haiku,o_netbsd, | |
| 32 | + | o_amiga,o_atari, o_solaris, o_qnx, o_netware, o_openbsd,o_wdosx, | |
| 33 | + | o_palmos,o_macos,o_darwin,o_emx,o_watcom,o_morphos,o_netwlibc, | |
| 34 | + | o_win64,o_wince,o_gba,o_nds,o_embedded,o_symbian,o_nativent,o_iphonesim, | |
| 35 | + | o_wii,o_s370 | |
| 36 | + | ); | |
| 37 | + | ``` | |
| 36 | 38 | ||
| 37 | 39 | About line 81, add the new item to these entries: | |
| 38 | 40 | ||
| 39 | - | ||
| 40 | - | ||
| 41 | - | ||
| 42 | - | ||
| 41 | + | ```text | |
| 42 | + | CpuStr : array[TCpu] of string=( | |
| 43 | + | 'i386','m68k','powerpc','sparc','x86_64','arm','powerpc64','avr','armeb', | |
| 44 | + | 'armel', 'mips', 'mipsel', 'mips64', 'mips64el','s370' | |
| 45 | + | ); | |
| 43 | 46 | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - | ||
| 47 | - | ||
| 47 | + | CpuSuffix : array[TCpu] of string=( | |
| 48 | + | '_i386','_m68k','_powerpc','_sparc','_x86_64','_arm','_powerpc64','avr', | |
| 49 | + | '_armeb', '_armel', '_mips', '_mipsel', '_mips64', '_mips64el','_s370' | |
| 50 | + | ); | |
| 48 | 51 | ||
| 49 | - | ||
| 50 | - | ||
| 51 | - | ||
| 52 | - | ||
| 52 | + | ppcSuffix : array[TCpu] of string=( | |
| 53 | + | '386','m68k','ppc','sparc','x86_64','arm','ppc64','avr','armeb', 'armel', | |
| 54 | + | 'mips', 'mipsel', 'mips64', 'mips64el','s370' | |
| 55 | + | ); | |
| 53 | 56 | ||
| 54 | - | ||
| 55 | - | ||
| 56 | - | ||
| 57 | - | ||
| 58 | - | ||
| 59 | - | ||
| 60 | - | ||
| 57 | + | OSStr : array[TOS] of string=( | |
| 58 | + | 'linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd', | |
| 59 | + | 'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx', | |
| 60 | + | 'palmos','macos','darwin','emx','watcom','morphos','netwlibc', | |
| 61 | + | 'win64','wince','gba','nds','embedded','symbian','nativent', | |
| 62 | + | 'iphonesim', 'wii','vse' | |
| 63 | + | ); | |
| 61 | 64 | ||
| 62 | - | ||
| 63 | - | ||
| 64 | - | ||
| 65 | - | ||
| 66 | - | ||
| 67 | - | ||
| 68 | - | ||
| 65 | + | OSSuffix : array[TOS] of string=( | |
| 66 | + | '_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd', | |
| 67 | + | '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx', | |
| 68 | + | '_palmos','_macos','_darwin','_emx','_watcom','_morphos','_netwlibc', | |
| 69 | + | '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent', | |
| 70 | + | '_iphonesim','_wii','_vse' | |
| 71 | + | ); | |
| 72 | + | ``` | |
| 69 | 73 | ||
| 70 | 74 | And then this huge table is changed to the following: | |
| 71 | 75 | ||
| 72 | - | ||
| 73 | - | ||
| 74 | - | ||
| 75 | - | ||
| 76 | - | ||
| 77 | - | ||
| 78 | - | ||
| 79 | - | ||
| 80 | - | ||
| 81 | - | ||
| 82 | - | ||
| 83 | - | ||
| 84 | - | ||
| 85 | - | ||
| 86 | - | ||
| 87 | - | ||
| 88 | - | ||
| 89 | - | ||
| 90 | - | ||
| 91 | - | ||
| 92 | - | ||
| 93 | - | ||
| 94 | - | ||
| 95 | - | ||
| 96 | - | ||
| 97 | - | ||
| 98 | - | ||
| 99 | - | ||
| 100 | - | ||
| 101 | - | ||
| 102 | - | ||
| 103 | - | ||
| 104 | - | ||
| 105 | - | ||
| 106 | - | ||
| 107 | - | ||
| 76 | + | ```text | |
| 77 | + | { This table is kept OS,Cpu because it is easier to maintain (PFV) } | |
| 78 | + | OSCpuPossible : array[TOS,TCpu] of boolean = ( | |
| 79 | + | { os i386 m68k ppc sparc x86_64 arm ppc64 avr armeb armel mips mipsel mips64 misp64el, s370} | |
| 80 | + | { linux } ( true, true, true, true, true, true, true, false, true, false, false, true, false, false, true), | |
| 81 | + | { go32v2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 82 | + | { win32 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 83 | + | { os2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 84 | + | { freebsd } ( true, true, false, false, true, false, false, false, false, false, false, false, false, false, false), | |
| 85 | + | { beos } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 86 | + | { haiku } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 87 | + | { netbsd } ( true, true, true, true, false, false, false, false, false, false, false, false, false, false, false), | |
| 88 | + | { amiga } ( false, true, true, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 89 | + | { atari } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 90 | + | { solaris } ( true, false, false, true, true, false, false, false, false, false, false, false, false, false, false), | |
| 91 | + | { qnx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 92 | + | { netware } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 93 | + | { openbsd } ( true, true, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 94 | + | { wdosx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 95 | + | { palmos } ( false, true, false, false, false, true, false, false, false, false, false, false, false, false, false), | |
| 96 | + | { macos } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 97 | + | { darwin } ( true, false, true, false, true, true, true, false, false, false, false, false, false, false, false), | |
| 98 | + | { emx } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 99 | + | { watcom } ( true, false, false, false ,false, false, false, false, false, false, false, false, false, false, false), | |
| 100 | + | { morphos } ( false, false, true, false ,false, false, false, false, false, false, false, false, false, false, false), | |
| 101 | + | { netwlibc }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 102 | + | { win64 } ( false, false, false, false, true, false, false, false, false, false, false, false, false, false, false), | |
| 103 | + | { wince }( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false), | |
| 104 | + | { gba } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false), | |
| 105 | + | { nds } ( false, false, false, false, false, true, false, false, false, false, false, false, false, false, false), | |
| 106 | + | { embedded }( true, true, true, true, true, true, true, true, true , false, false, false, false, false, false), | |
| 107 | + | { symbian } ( true, false, false, false, false, true, false, false, false, false, false, false, false, false, false), | |
| 108 | + | { nativent }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 109 | + | { iphonesim }( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 110 | + | { wii } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false, false), | |
| 111 | + | { vse } ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, true) | |
| 112 | + | ); | |
| 113 | + | ``` | |
| 108 | 114 | ||
| 109 | 115 | 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 | 116 | ||
| 111 | 117 | 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 | 118 | ||
| 113 | 119 | ||
| 114 | 120 | *[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]] | |
| 115 | 121 | ||
| 116 | 122 | --- | |
| 117 | 123 | *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 | 124 | Category: High-performance computing | |
| 119 | 125 | Category: Mainframes |
