Sparse Invaders Source Sound.txt - simondotm/stardot-wiki GitHub Wiki

Sparse Invaders Source - Sound.txt

   ;-------------------------------------------------------------------------------

   ;  Sound  - Invaders ...

   ;  Written by PJ for use within Invaders.

   ;

   ;  Copyright 2008,2009 Neil Beresford

   ;

   ;    This file is part of Sparse Invaders.

   ;    Sparse Invaders is free software: you can redistribute it and/or modify

   ;    it under the terms of the GNU General Public License as published by

   ;    the Free Software Foundation, either version 3 of the License, or

   ;    (at your option) any later version.

   ;

   ;    Sparse Invaders is distributed in the hope that it will be useful,

   ;    but WITHOUT ANY WARRANTY; without even the implied warranty of

   ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

   ;    GNU General Public License for more details.

   ;

   ;    You should have received a copy of the GNU General Public License

   ;    along with Sparse Invaders.  If not, see <http://www.gnu.org/licenses/>.

   ;

   ;

   ;-------------------------------------------------------------------------------

   ;-----------------------------

   ;

   ;       VDU CODES

   ;

   ;-----------------------------

   .alias VDU_NULL $00

   .alias VDU_TO_PRINTER   $01

   .alias VDU_ENABLE_PRINTER   $02

   .alias VDU_DISABLE_PRINTER  $03

   .alias VDU_WRITE_TEXT   $04

   .alias VDU_WRITE_TEXT_GFX   $05

   .alias VDU_ENABLE   $06

   .alias VDU_BEEP $07

   .alias VDU_CURSOR_BACK  $08

   .alias VDU_CURSOR_FWD   $09

   .alias VDU_CURSOR_DOWN  $0A

   .alias VDU_CURSOR_UP    $0B

   .alias VDU_CLEAR_TEXT   $0C

   .alias VDU_RETURN   $0D

   .alias VDU_PAGED_MODE_ON    $0E

   .alias VDU_PAGED_MODE_OFF   $0F

   .alias VDU_CLEAR_GFX    $10

   .alias VDU_TEXT_COLOUR  $11

   .alias VDU_GFX_COLOUR   $12

   .alias VDU_LOGICAL_COLOUR   $13

   .alias VDU_DEFAULT_LOGICAL_COLOURS  $14

   .alias VDU_DISABLE  $15

   .alias VDU_MODE $16

   .alias VDU_PROGRAM_DISPLAY_CHAR $17

   .alias VDU_GFX_WINDOW   $18

   .alias VDU_PLOT $19

   .alias VDU_RESTORE_WINDOW   $1A

   .alias VDU_ESCAPE   $1B

   .alias VDU_TEXT_WINDOW  $1C

   .alias VDU_GFX_ORIGIN   $1D

   .alias VDU_CURSOR_HOME  $1E

   .alias VDU_MOVE_CURSOR  $1F

   ;-----------------------------

   ;

   ;       OSWORD

   ;

   ;-----------------------------

   .alias OSW_READ_LINE    $00

   .alias OSW_READ_SYS_CLOCK   $01

   .alias OSW_WRITE_SYS_CLOCK  $02

   .alias OSW_READ_TIMER   $03

   .alias OSW_WRITE_TIMER  $04

   .alias OSW_READ_IO_BYTE $05

   .alias OSW_WRITE_IO_BYTE    $06

   .alias OSW_SOUND    $07

   .alias OSW_DEFINE_ENVELOPE  $08

   .alias OSW_READ_PIXEL   $09

   .alias OSW_READ_CHARACTER_DEFN  $0A

   .alias OSW_READ_PALETTE $0B

   .alias OSW_WRITE_PALETTE    $0C

   .alias OSW_READ_CURSOR  $0D

   ;-----------------------------

   ;

   ;       INKEY

   ;

   ;-----------------------------

   .alias INKEY_SPACE  $9D

   .alias INKEY_SLASH_QUESTION $87

   .alias INKEY_X  $BD

   .alias INKEY_Z  $9E

   .alias INKEY_A  $BE

   .alias INKEY_COMMA_LESSTHAN $99

   .alias INKEY_PERIOD_GREATERTHAN $98

   .alias INKEY_RETURN $B6

   ;-----------------------------

   ;

   ;       OSBYTE

   ;

   ;-----------------------------

   .alias FX_PRINT_OPERATING_SYSTEM_VERSION    $00

   .alias FX_USER_OSBYTE_CALL_RW_LOCATION_ $01

   .alias FX_SELECT_INPUT_STREAM   $02

   .alias FX_SELECT_OUTPUT_STREAM  $03

   .alias FX_ENABLEDISABLE_CURSOR_EDITING  $04

   .alias FX_SELECT_PRINTER_DESTINATION    $05

   .alias FX_SET_CHARACTER_IGNORED_BY_PRINTER  $06

   .alias FX_SET_RS_BAUD_RATE_FOR_RECEIVING_DATA   $07

   .alias FX_SET_RS_BAUD_RATE_FOR_DATA_TRANSMISSION    $08

   .alias FX_SET_FLASHING_COLOUR_MARK_STATE_DURATION   $09

   .alias FX_SET_FLASHING_COLOUR_SPACE_STATE_DURATION  $0A

   .alias FX_SET_KEYBOARD_AUTOREPEAT_DELAY_INTERVAL    $0B

   .alias FX_SET_KEYBOARD_AUTOREPEAT_RATE  $0C

   .alias FX_DISABLE_EVENTS    $0D

   .alias FX_ENABLE_EVENTS $0E

   .alias FX_FLUSH_SELECTED_BUFFER_CLASS   $0F

   .alias FX_SELECT_ADC_CHANNELS_TO_BE_SAMPLED $10

   .alias FX_FORCE_AN_ADC_CONVERSION   $11

   .alias FX_RESET_SOFT_KEYS   $12

   .alias FX_WAIT_FOR_VERTICAL_SYNC    $13

   .alias FX_EXPLODE_SOFT_CHARACTER_RAM_ALLOCATION $14

   .alias FX_FLUSH_SPECIFIC_BUFFER $15

   .alias FX_READ_VDU_STATUS   $75

   .alias FX_REFLECT_KEYBOARD_STATUS_IN_LEDS   $76

   .alias FX_CLOSE_ANY_SPOOL_OR_EXEC_FILES $77

   .alias FX_WRITE_CURRENT_KEYS_PRESSED_INFORMATION    $78

   .alias FX_PERFORM_KEYBOARD_SCAN $79

   .alias FX_PERFORM_KEYBOARD_SCAN_FROM__  $7A

   .alias FX_INFORM_OS_PRINTER_DRIVER_GOING_DORMANT    $7B

   .alias FX_CLEAR_ESCAPE_CONDITION    $7C

   .alias FX_SET_ESCAPE_CONDITION  $7D

   .alias FX_ACKNOWLEDGE_DETECTION_OF_ESCAPE_CONDITION $7E

   .alias FX_CHECK_FOR_EOF_ON_AN_OPEN_FILE $7F

   .alias FX_READ_ADC_CHANNEL_OR_GET_BUFFER_STATUS $80

   .alias FX_READ_KEY_WITH_TIME_LIMIT  $81

   .alias FX_READ_MACHINE_HIGH_ORDER_ADDRESS   $82

   .alias FX_READ_TOP_OF_OS_RAM_ADDRESS_OSHWM  $83

   .alias FX_READ_BOTTOM_OF_DISPLAY_RAM_ADDRESS_HIMEM  $84

   .alias FX_READ_BOTTOM_OF_DISPLAY_ADDRESS_FOR_A_GIVEN_MODE   $85

   .alias FX_READ_TEXT_CURSOR_POSITION_POS_AND_VPOS    $86

   .alias FX_READ_CHARACTER_AT_CURSOR_POSITION $87

   .alias FX_PERFORM_CODE  $88

   .alias FX_PERFORM_MOTOR $89

   .alias FX_INSERT_VALUE_INTO_BUFFER  $8A

   .alias FX_PERFORM_OPT   $8B

   .alias FX_PERFORM_TAPE  $8C

   .alias FX_PERFORM_ROM   $8D

   .alias FX_ENTER_LANGUAGE_ROM    $8E

   .alias FX_ISSUE_PAGED_ROM_SERVICE_REQUEST   $8F

   .alias FX_PERFORM_TV    $90

   .alias FX_GET_CHARACTER_FROM_BUFFER $91

   .alias FX_READ_FROM_FRED__MHZ_BUS   $92

   .alias FX_WRITE_TO_FRED__MHZ_BUS    $93

   .alias FX_READ_FROM_JIM__MHZ_BUS    $94

   .alias FX_WRITE_TO_JIM__MHZ_BUS $95

   .alias FX_READ_FROM_SHEILA_MAPPED_IO    $96

   .alias FX_WRITE_TO_SHEILA_MAPPED_IO $97

   .alias FX_EXAMINE_BUFFER_STATUS $98

   .alias FX_INSERT_CHARACTER_INTO_INPUT_BUFFER    $99

   .alias FX_WRITE_TO_VIDEO_ULA_CONTROL_REGISTER_AND_COPY  $9A

   .alias FX_WRITE_TO_VIDEO_ULA_PALETTE_REGISTER_AND_COPY  $9B

   .alias FX_RW__CONTROL_REGISTER_AND_COPY $9C

   .alias FX_FAST_TUBE_BPUT    $9D

   .alias FX_READ_FROM_SPEECH_PROCESSOR    $9E

   .alias FX_WRITE_TO_SPEECH_PROCESSOR $9F

   .alias FX_READ_VDU_VARIABLE_VALUE   $A0

   .alias FX_READ_START_ADDRESS_OF_OS_VARIABLES_LOW_BYTE   $A6

   .alias FX_READ_START_ADDRESS_OF_OS_VARIABLES_HIGH_BYTE  $A7

   .alias FX_READ_ADDRESS_OF_ROM_POINTER_TABLE_LOW_BYTE    $A8

   .alias FX_READ_ADDRESS_OF_ROM_POINTER_TABLE_HIGH_BYTE   $A9

   .alias FX_READ_ADDRESS_OF_ROM_INFORMATION_TABLE_LOW_BYTE    $AA

   .alias FX_READ_ADDRESS_OF_ROM_INFORMATION_TABLE_HIGH_BYTE   $AB

   .alias FX_READ_ADDRESS_OF_KEY_TRANSLATION_TABLE_LOW_BYTE    $AC

   .alias FX_READ_ADDRESS_OF_KEY_TRANSLATION_TABLE_HIGH_BYTE   $AD

   .alias FX_READ_START_ADDRESS_OF_OS_VDU_VARIABLES_LOW_BYTE   $AE

   .alias FX_READ_START_ADDRESS_OF_OS_VDU_VARIABLES_HIGH_BYTE  $AF

   .alias FX_RW_CFS_TIMEOUT_COUNTER    $B0

   .alias FX_RW_INPUT_SOURCE   $B1

   .alias FX_RW_KEYBOARD_SEMAPHORE $B2

   .alias FX_RW_PRIMARY_OSHWM  $B3

   .alias FX_RW_CURRENT_OSHWM  $B4

   .alias FX_RW_RS_MODE    $B5

   .alias FX_READ_CHARACTER_DEFINITION_EXPLOSION_STATE $B6

   .alias FX_RW_CASSETTEROM_FILING_SYSTEM_SWITCH   $B7

   .alias FX_READ_RAM_COPY_OF_VIDEO_ULA_CONTROL_REGISTER   $B8

   .alias FX_READ_RAM_COPY_OF_VIDEO_ULA_PALETTE_REGISTER   $B9

   .alias FX_RW_ROM_NUMBER_ACTIVE_AT_LAST_BRK_ERROR    $BA

   .alias FX_RW_NUMBER_OF_ROM_SOCKET_CONTAINING_BASIC  $BB

   .alias FX_READ_CURRENT_ADC_CHANNEL  $BC

   .alias FX_RW_MAXIMUM_ADC_CHANNEL_NUMBER $BD

   .alias FX_READ_ADC_CONVERSION_TYPE  $BE

   .alias FX_RW_RS_USE_FLAG    $BF

   .alias FX_READ_RS_CONTROL_FLAG  $C0

   .alias FX_RW_FLASH_COUNTER  $C1

   .alias FX_RW_MARK_PERIOD_COUNT  $C2

   .alias FX_RW_SPACE_PERIOD_COUNT $C3

   .alias FX_RW_KEYBOARD_AUTOREPEAT_DELAY  $C4

   .alias FX_RW_KEYBOARD_AUTOREPEAT_PERIOD $C5

   .alias FX_RW_EXEC_FILE_HANDLE   $C6

   .alias FX_RW_SPOOL_FILE_HANDLE  $C7

   .alias FX_RW_ESCAPE_BREAK_EFFECT    $C8

   .alias FX_RW_ECONET_KEYBOARD_DISABLE    $C9

   .alias FX_RW_KEYBOARD_STATUS_BYTE   $CA

   .alias FX_RW_RS_HANDSHAKE_EXTENT    $CB

   .alias FX_RW_RS_INPUT_SUPPRESSION_FLAG  $CC

   .alias FX_RW_CASSETTERS_SELECTION_FLAG  $CD

   .alias FX_RW_ECONET_OS_CALL_INTERCEPTION_STATUS $CE

   .alias FX_RW_ECONET_OSRDCH_INTERCEPTION_STATUS  $CF

   .alias FX_RW_ECONET_OSWRCH_INTERCEPTION_STATUS  $D0

   .alias FX_RW_SPEECH_SUPPRESSION_STATUS  $D1

   .alias FX_RW_SOUND_SUPPRESSION_STATUS   $D2

   .alias FX_RW_BELL_CHANNEL   $D3

   .alias FX_RW_BELL_ENVELOPE_NUMBERAMPLITUDE  $D4

   .alias FX_RW_BELL_FREQUENCY $D5

   .alias FX_RW_BELL_DURATION  $D6

   .alias FX_RW_STARTUP_MESSAGE_AND_BOOT_OPTIONS   $D7

   .alias FX_RW_LENGTH_OF_SOFT_KEY_STRING  $D8

   .alias FX_RW_NUMBER_OF_LINES_PRINTED_SINCE_LAST_PAGE    $D9

   .alias FX_RW_NUMBER_OF_ITEMS_IN_VDU_QUEUE   $DA

   .alias FX_RW_TAB_CHARACTER_VALUE    $DB

   .alias FX_RW_ESCAPE_CHARACTER_VALUE $DC

   .alias FX_RW_CHARACTER_CO_TO_CF_STATUS  $DD

   .alias FX_RW_CHARACTER_DO_TO_DF_STATUS  $DE

   .alias FX_RW_CHARACTER_EO_TO_EF_STATUS  $DF

   .alias FX_RW_CHARACTER_FO_TO_FF_STATUS  $E0

   .alias FX_RW_FUNCTION_KEY_STATUS    $E1

   .alias FX_RW_SHIFT_FUNCTION_KEY_STATUS  $E2

   .alias FX_RW_CTRLFUNCTION_KEY_STATUS    $E3

   .alias FX_RW_CTRLSHIFTFUNCTION_KEY_STATUS   $E4

   .alias FX_RW_ESCAPE_KEY_STATUS  $E5

   .alias FX_RW_FLAGS_DETERMINING_ESCAPE_EFFECTS   $E6

   .alias FX_RW_JRQ_BIT_MASK_FOR_USER_ $E7

   .alias FX_RW_IRQ_BIT_MASK_FOR_  $E8

   .alias FX_RW_IRQ_BIT_MASK_FOR_SYSTEM_S  $E9

   .alias FX_READ_FLAG_INDICATING_TUBE_PRESENCE    $EA

   .alias FX_READ_FLAG_INDICATING_SPEECH_PROCESSOR_PRESENCE    $EB

   .alias FX_RW_WRITE_CHARACTER_DESTINATION_STATUS $EC

   .alias FX_RW_CURSOR_EDITING_STATUS  $ED

   .alias FX_RW_LOCATION_E_NOT_USED_BY__   $EE

   .alias FX_RW_LOCATION_F_NOT_USED_BY__   $EF

   .alias FX_RW_LOCATION__NOT_USED_BY__    $F0

   .alias FX_RW_LOCATION__USED_BY_FX_  $F1

   .alias FX_READ_RAM_COPY_OF_SERIAL_PROCESSOR_ULA $F2

   .alias FX_RW_TIMER_SWITCH_STATE $F3

   .alias FX_RW_SOFT_KEY_CONSISTENCY_FLAG  $F4

   .alias FX_RW_PRINTER_DESTINATION_FLAG   $F5

   .alias FX_RW_CHARACTER_IGNORED_BY_PRINTER   $F6

   .alias FX_RW_FIRST_BYTE_OF_BREAK_INTERCEPT_CODE $F7

   .alias FX_RW_SECOND_BYTE_OF_BREAK_INTERCEPT_CODE    $F8

   .alias FX_RW_THIRD_BYTE_OF_BREAK_INTERCEPT_CODE $F9

   .alias FX_RW_LOCATION_A_NOT_USED_BY__   $FA

   .alias FX_RW_LOCATION_B_NOT_USED_BY__   $FB

   .alias FX_RW_CURRENT_LANGUAGE_ROM_NUMBER    $FC

   .alias FX_RW_LAST_BREAK_TYPE    $FD

   .alias FX_RW_AVAILABLE_RAM  $FE

   .alias FX_RW_START_UP_OPTIONS   $FF

   .alias MuteFlag  $74

   .alias SoundIndex $75

   .alias MissFirstSound $76

   .alias IRQVECL $204

   .alias IRQVECH $205

   .alias osbyte $fff4

   .alias osword $fff1

   .alias oswrch $ffee

   ;-------------------------------------------------------------------------------

   ; Functionality 

   ;-------------------------------------------------------------------------------

   _MAKE_SOUND:

       STA SoundIndex      ;//[0E9E] 85 84

       LDA MuteFlag        ;//[0EA0] AD 2D 2F

       BNE bra_0EE6        ;//[0EA3] D0 41

       TXA         ;//[0EA5] 8A

       PHA         ;//[0EA6] 48

       TYA         ;//[0EA7] 98

       PHA         ;//[0EA8] 48

       LDX SoundIndex      ;//[0EA9] A6 84

       LDA SoundSync,X     ;//[0EAB] BD 08 22

       STA SoundIndex      ;//[0EAE] 85 84

   bra_0EB0:

       LDA SoundSync,X     ;//[0EB0] BD 08 22

       STA SoundBlock1     ;//[0EB3] 8D 01 22

       LDA SoundChannel,X      ;//[0EB6] BD 14 22

       STA SoundBlock      ;//[0EB9] 8D 00 22

       LDY #$02        ;//[0EBC] A0 02

       LDA SoundVolumeEnv,X        ;//[0EBE] BD 20 22

       JSR _STORE_SOUND_WORD       ;//[0EC1] 20 E7 0E

       LDA SoundPitch,X        ;//[0EC4] BD 2C 22

       JSR _STORE_SOUND_WORD       ;//[0EC7] 20 E7 0E

       LDA SoundDuration,X     ;//[0ECA] BD 38 22

       JSR _STORE_SOUND_WORD       ;//[0ECD] 20 E7 0E

       TXA         ;//[0ED0] 8A

       PHA         ;//[0ED1] 48

       LDX #<SoundBlock ;//[0ED2] A2 00

    LDY #>`SoundBlock        ;//[0ED4] A0 22`

       LDA #OSW_SOUND      ;//[0ED6] A9 07

       JSR osword      ;//[0ED8] 20 F1 FF

       PLA         ;//[0EDB] 68

       TAX         ;//[0EDC] AA

       INX         ;//[0EDD] E8

       DEC SoundIndex      ;//[0EDE] C6 84

       BPL bra_0EB0        ;//[0EE0] 10 CE

       PLA         ;//[0EE2] 68

       TAY         ;//[0EE3] A8

       PLA         ;//[0EE4] 68

       TAX         ;//[0EE5] AA

   bra_0EE6:

       RTS         ;//[0EE6] 60

   _STORE_SOUND_WORD:

       STA SoundBlock,Y        ;//[0EE7] 99 00 22

       INY         ;//[0EEA] C8

     ASL       ;//[0EEB] 0A

       LDA #$00        ;//[0EEC] A9 00

       BCC bra_0EF2        ;//[0EEE] 90 02

       LDA #$FF        ;//[0EF0] A9 FF

   bra_0EF2:

       STA SoundBlock,Y        ;//[0EF2] 99 00 22

       INY         ;//[0EF5] C8

       RTS         ;//[0EF6] 60

   SoundBlock:

       .byte $13       ;//[2200] .

   SoundBlock1:

       .byte $00       ;//[2201] .

       .byte $F1       ;//[2202] .

       .byte $FF       ;//[2203] .

       .byte $04       ;//[2204] .

       .byte $00       ;//[2205] .

       .byte $01       ;//[2206] .

       .byte $00       ;//[2207] .

   SoundSync:

       .byte $00       ;//[2208] .

       .byte $00       ;//[2209] .

       .byte $01       ;//[220A] .

       .byte $01       ;//[220B] .

       .byte $01       ;//[220C] .

       .byte $01       ;//[220D] .

       .byte $00       ;//[220E] .

       .byte $00       ;//[220F] .

       .byte $00       ;//[2210] .

       .byte $00       ;//[2211] .

       .byte $00       ;//[2212] .

       .byte $00       ;//[2213] .

   SoundChannel:

       .byte $12       ;//[2214] .

       .byte $13       ;//[2215] .

       .byte $11       ;//[2216] .

       .byte $10       ;//[2217] .

       .byte $11       ;//[2218] .

       .byte $10       ;//[2219] .

       .byte $12       ;//[221A] .

       .byte $13       ;//[221B] .

       .byte $13       ;//[221C] .

       .byte $13       ;//[221D] .

       .byte $13       ;//[221E] .

       .byte $13       ;//[221F] .

   SoundVolumeEnv:

       .byte $01       ;//[2220] .

       .byte $F1       ;//[2221] .

       .byte $02       ;//[2222] .

       .byte $03       ;//[2223] .

       .byte $02       ;//[2224] .

       .byte $F1       ;//[2225] .

       .byte $01       ;//[2226] .

       .byte $04       ;//[2227] .

       .byte $00       ;//[2228] .

       .byte $F1       ;//[2229] .

       .byte $F1       ;//[222A] .

       .byte $04       ;//[222B] .

   SoundPitch:

       .byte $64       ;//[222C] d

       .byte $C8       ;//[222D] .

       .byte $50       ;//[222E] P

       .byte $07       ;//[222F] .

       .byte $50       ;//[2230] P

       .byte $07       ;//[2231] .

       .byte $AA       ;//[2232] .

       .byte $78       ;//[2233] x

       .byte $00       ;//[2234] .

       .byte $00       ;//[2235] .

       .byte $04       ;//[2236] .

       .byte $96       ;//[2237] .

   SoundDuration:

       .byte $0A       ;//[2238] .

       .byte $02       ;//[2239] .

       .byte $FF       ;//[223A] .

       .byte $0A       ;//[223B] .

       .byte $FF       ;//[223C] .

       .byte $04       ;//[223D] .

       .byte $0A       ;//[223E] .

       .byte $FF       ;//[223F] .

       .byte $01       ;//[2240] .

       .byte $01       ;//[2241] .

       .byte $01       ;//[2242] .

       .byte $FF       ;//[2243] .

 

   Env1:

       .byte $01,$02,$ff,$fe,$ff,$0a,$0a,$32,$7e,$fc,$fc,$fc,$7e,$00

   Env2:

       .byte $02,$02,$04,$00,$FC,$0A,$0A,$0A,$01,$00,$00,$00,$01,$01

   Env3:

           .byte $03,$04,$00,$00,$00,$01,$01,$01,$7e,$fc,$ff,$fc,$7e,$50

   Env4:

       .byte $04,$01,$08,$04,$f4,$04,$04,$04,$64,$00,$00,$00,$64,$64

   _INITSOUND:

       LDA #VDU_MODE       ;//[2FF0] A9 16

       JSR oswrch      ;//[2FF2] 20 EE FF

       LDA #VDU_ENABLE_PRINTER     ;//[2FF5] A9 02

       JSR oswrch      ;//[2FF7] 20 EE FF

       LDA #0

       STA     MuteFlag

       LDX #<Env1 ;//[0ED2] A2 00

    LDY #>`Env1      ;//[0ED4] A0 22`

       LDA #OSW_DEFINE_ENVELOPE ;//[0ED6] A9 07

       JSR osword      ;//[0ED8] 20 F1 FF

       

       LDX #<Env2 ;//[0ED2] A2 00

    LDY #>`Env2      ;//[0ED4] A0 22`

       LDA #OSW_DEFINE_ENVELOPE ;//[0ED6] A9 07

       JSR osword      ;//[0ED8] 20 F1 FF

       LDX #<Env3 ;//[0ED2] A2 00

    LDY #>`Env3      ;//[0ED4] A0 22`

       LDA #OSW_DEFINE_ENVELOPE ;//[0ED6] A9 07

       JSR osword      ;//[0ED8] 20 F1 FF

       LDX #<Env4 ;//[0ED2] A2 00

    LDY #>`Env4      ;//[0ED4] A0 22`

       LDA #OSW_DEFINE_ENVELOPE ;//[0ED6] A9 07

       JSR osword      ;//[0ED8] 20 F1 FF

       RTS

⚠️ **GitHub.com Fallback** ⚠️