Sign in Join
Wiki copytemporary

ZSeries/Part 3: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]]
22
33This 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.
44
55# Units I will have to create
66
77## Unit i_vse
88
99
1010*Called from: **compiler.pas**, includes **fpcdefs.inc**, no called units noted*
1111
1212This 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.
1313
1414## t_s370.pas
1515
1616(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.
1717
1818# Other files
1919
2020From the description for porting the compiler, a few other files have to be edited.
2121
2222- utils/fpcm/fpcmmain.pp - add a new entry at the end of TCpu and TOs, near line 85:
2323
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-`     );`
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+ );
2829
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-`     );`
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+```
3638
3739About line 81, add the new item to these entries:
3840
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-`     );`
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+ );
4346
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-`     );`
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+ );
4851
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-`     );`
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+ );
5356
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-`     );`
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+ );
6164
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-`     );`
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+```
6973
7074And then this huge table is changed to the following:
7175
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-`     );`
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+```
108114
109115I 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.
110116
111117It 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.
112118
113119
114120*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]]
115121
116122---
117123*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).*
118124Category: High-performance computing
119125Category: Mainframes

Back to history