various_W.asm(4): warning[opkeyword]: Label collides with one of the operator keywords, try capitalizing it or other name: abs
various_W.asm(11): warning[fwdref]: forward reference of symbol: IF fwd_ref_label
various_W.asm(83): warning[fwdref]: forward reference of symbol: IF fwd_ref_label
# file opened: various_W.asm
  1   0000              ; various -W<warning_id> combinations (hopefully all of them, if possible)
  2   0000
  3   0000              ; the default is "enabled" for all warnings - exercise all of them
  4   0000 21 00 00     abs:    ld hl,@abs ; placeholder for removed `ld hl,abs` (-Wabs removed in v1.20.0)
various_W.asm(5): warning[noramtop]: current device doesn't init memory in any way (RAMTOP is ignored)
  5   0003                  DEVICE ZXSPECTRUMNEXT, $8000
various_W.asm(6): warning[noramtop]: current device doesn't init memory in any way (RAMTOP is ignored)
  6   0003                  DEVICE NOSLOT64K, $8000
  7   0003                  DEVICE ZXSPECTRUM48, $8000
various_W.asm(7): warning[devramtop]: [DEVICE] this device was already opened with different RAMTOP value
  7   0003                DEVICE ZXSPECTRUM48, $8001
  8   0003                  DISP 123
various_W.asm(8): warning[displacedorg]: ORG-address set inside displaced block, the physical address is not modified, only displacement address
  8   007B                ORG 345
  8   0159                ENT
various_W.asm(9): warning[orgpage]: [ORG] page argument affects current slot while address is outside: address 0x007B vs slot 3 range 0xC000..0xFFFF
  9   0003                  ORG 123, 0
 10   007B
 11   007B                  IF fwd_ref_label
 11   007B                ENDIF    ; it's W_EARLY warning, emitted before last pass, look at start of listing
 12   007B
 13   007B                  lua pass3
 14   007B ~                    _pc("nop")
 15   007B 00           nop
various_W.asm(15): warning[luamc]: When lua script emits machine code bytes, use "ALLPASS" modifier
 15   007C                  endlua
 16   007C
 17   007C                  DEVICE ZXSPECTRUMNEXT
 17   007C                ORG $8000
 17   8000 C9             ret
various_W.asm(17): warning[nexstack]: [SAVENEX] non-zero data are in stackAddress area, may get overwritten by NEXLOAD
 17   8001                SAVENEX OPEN "various_W.nex", $8000, $8002
 17   8001                SAVENEX CLOSE
 18   8001                  ; omitting "nexbmppal" test because it requires too many prerequisites (has dedicated tests any way)
 19   8001                  ; omitting "sna48" and "sna128" tests (have dedicated test any way)
 20   8001                  ; omitting "trdext", "trdext3", "trdextb" and "trddup" tests (have dedicated test)
 21   8001                  RELOCATE_START
various_W.asm(21): warning[relalign]: [ALIGN] inside relocation block: may become misaligned when relocated
 21   8001 00             ALIGN 2
 21   8002                RELOCATE_END
various_W.asm(22): warning[rdlow]: Reading memory at low address: 255
 22   8002 3A FF 00         ld  a,(255)
 23   8005                  ; omitting "reldiverts" and "relunstable" test (relocation has many dedicated+updated tests)
 24   8005                  ; omitting "dispmempage" test (has dedicated test (non-trivial))
various_W.asm(25): warning[bpfile]: breakpoints file was not specified
 25   8005                  SETBREAKPOINT
various_W.asm(26): warning[out0]: 'out (c),0' is unstable, on CMOS based chips it does `out (c),255`
 26   8005 ED 71            out (c),0
 27   8007
 28   8007
 29   8007
 30   8007
 31   8007
 32   8007
 33   8007
 34   8007
 35   8007
 36   8007
 37   8007
 38   8007
 39   8007
 40   8007
 41   8007
 42   8007
 43   8007                  ORG 0       ; start again at zero offset
 44   0000              ; disable/enable specific warning and test specific-suppression in eol comment
 45   0000
 46   0000                  ; abs
 47   0000                  ; placeholder for removed -Wabs test to minimize diff
 48   0000 21 00 00         ld hl,@abs
 49   0003
 50   0003 21 00 00         ld hl,@abs
 51   0006 21 00 00         ld hl,@abs
 52   0009
 53   0009                  ; impossible to re-test zxnramtop and noslotramtop, because they are emitted just once
 54   0009
 55   0009                  ; devramtop
 56   0009                  OPT -Wno-devramtop
 57   0009                  DEVICE ZXSPECTRUM48, $8002
 58   0009                  OPT -Wdevramtop
various_W.asm(59): warning[devramtop]: [DEVICE] this device was already opened with different RAMTOP value
 59   0009                  DEVICE ZXSPECTRUM48, $8003  ; luamc-ok - some other id, should not suppress devramtop
 60   0009                  DEVICE ZXSPECTRUM48, $8004  ; but devramtop-ok should suppress it
 61   0009
 62   0009                  ; displacedorg
 63   0009                  DISP 101
 64   0065                  OPT -Wno-displacedorg
 65   0065                  ORG 201
 66   00C9                  OPT -Wdisplacedorg
various_W.asm(67): warning[displacedorg]: ORG-address set inside displaced block, the physical address is not modified, only displacement address
 67   00C9                  ORG 202     ; luamc-ok - some other id, should not suppress displacedorg
 68   00CA                  ORG 203     ; but displacedorg-ok should suppress it
 69   00CB                  ENT
 70   0009
 71   0009                  ; orgpage
 72   0009                  OPT -Wno-orgpage
 73   0009                  ORG 123, 0
 74   007B                  OPT -Worgpage
various_W.asm(75): warning[orgpage]: [ORG] page argument affects current slot while address is outside: address 0x007B vs slot 3 range 0xC000..0xFFFF
 75   007B                  ORG 123, 0  ; luamc-ok - some other id, should not suppress orgpage
 76   007B                  ORG 123, 0  ; but orgpage-ok should suppress it
 77   007B
 78   007B                  ; fwdref
 79   007B                  OPT -Wno-fwdref
 80   007B                  IF fwd_ref_label
 81   007B                  ENDIF
 82   007B                  OPT -Wfwdref
 83   007B                  IF fwd_ref_label    ; luamc-ok - some other id, should not suppress fwdref
 84   007B                  ENDIF
 85   007B                  IF fwd_ref_label    ; but fwdref-ok should suppress it
 86   007B                  ENDIF
 87   007B
 88   007B                  ; luamc
 89   007B                  OPT -Wno-luamc
 90   007B                  lua pass3
 91   007B ~                    _pc("nop")
 92   007B 00           nop
 92   007C                  endlua
 93   007C                  OPT -Wluamc
 94   007C                  lua pass3   ; devramtop-ok - some other id, should not suppress luamc
 95   007C ~                    _pc("nop")
 96   007C 00           nop
various_W.asm(96): warning[luamc]: When lua script emits machine code bytes, use "ALLPASS" modifier
 96   007D                  endlua
 97   007D                  lua pass3   ; but luamc-ok should suppress it
 98   007D ~                    _pc("nop")
 99   007D 00           nop
 99   007E                  endlua
100   007E                  lua pass3
101   007E ~                    _pc("nop")
102   007E 00           nop
102   007F                  endlua      ; but luamc-ok should suppress it (also at "endlua" line)
103   007F
104   007F                  ; nexstack
105   007F                  DEVICE ZXSPECTRUMNEXT
106   007F                  OPT -Wno-nexstack
107   007F                  SAVENEX OPEN "various_W.nex", $8000, $8002
108   007F                  SAVENEX CLOSE
109   007F                  OPT -Wnexstack
various_W.asm(110): warning[nexstack]: [SAVENEX] non-zero data are in stackAddress area, may get overwritten by NEXLOAD
110   007F                  SAVENEX OPEN "various_W.nex", $8000, $8002  ; devramtop-ok - some other id, should not suppress nexstack
111   007F                  SAVENEX CLOSE
112   007F                  SAVENEX OPEN "various_W.nex", $8000, $8002  ; but nexstack-ok should suppress it
113   007F                  SAVENEX CLOSE
114   007F
115   007F                  ; relalign
116   007F                  RELOCATE_START
117   007F                  OPT -Wno-relalign
118   007F 00               ALIGN 2
119   0080                  OPT -Wrelalign
various_W.asm(120): warning[relalign]: [ALIGN] inside relocation block: may become misaligned when relocated
120   0080                  ALIGN 4     ; devramtop-ok - some other id, should not suppress relalign
121   0080                  ALIGN 8     ; but relalign-ok should suppress it
122   0080                  RELOCATE_END
123   0080
124   0080                  ; rdlow
125   0080                  OPT -Wno-rdlow
126   0080 3A FF 00         ld  a,(255)
127   0083                  OPT -Wrdlow
various_W.asm(128): warning[rdlow]: Reading memory at low address: 255
128   0083 3A FF 00         ld  a,(255)  ; devramtop-ok - some other id, should not suppress rdlow
129   0086 3A FF 00         ld  a,(255)  ; but rdlow-ok should suppress it
130   0089
131   0089                  ; bpfile
132   0089                  OPT -Wno-bpfile
133   0089                  SETBREAKPOINT
134   0089                  OPT -Wbpfile
various_W.asm(135): warning[bpfile]: breakpoints file was not specified
135   0089                  SETBREAKPOINT   ; devramtop-ok - some other id, should not suppress bpfile
136   0089                  SETBREAKPOINT   ; but bpfile-ok should suppress it
137   0089
138   0089                  ; out0
139   0089                  OPT -Wno-out0
140   0089 ED 71            out (c),0
141   008B                  OPT -Wout0
various_W.asm(142): warning[out0]: 'out (c),0' is unstable, on CMOS based chips it does `out (c),255`
142   008B ED 71            out (c),0   ; devramtop-ok - some other id, should not suppress out0
143   008D ED 71            out (c),0   ; but out0-ok should suppress it
144   008F
145   008F              ; testing corner-case states possible with the -W option (test coverage)
various_W.asm(146): error: no argument after -W: OPT -W -Wnon-existent-warning-id-to-cause-warning
various_W.asm(146): warning: unknown warning id in -W option: non-existent-warning-id-to-cause-warning
146   008F                  OPT -W -Wnon-existent-warning-id-to-cause-warning
147   008F              fwd_ref_label:  EQU $1234
148   008F
# file closed: various_W.asm

Value    Label
------ - -----------------------------------------------------------
0x0000   abs
0x1234   fwd_ref_label
0x0000 X relocate_count
0x0000 X relocate_size
