LISTING4.TXT: Difference between revisions
Jump to navigation
Jump to search
Olivier.jan (talk | contribs) (Olivier.jan moved page LISTING4.TXT to LISTING4.TXT/fr: Renaming for language version) Tag: New redirect |
Olivier.jan (talk | contribs) (Replacing content of with translated version) Tag: Removed redirect |
||
Line 1: | Line 1: | ||
+ | ********************************************************************** |
||
− | #REDIRECT [[LISTING4.TXT/fr]] |
||
+ | * * |
||
+ | * 68000 ASSEMBLER COURSE ON ATARI ST * |
||
+ | * * |
||
+ | * by The Fierce Rabbit (from 44E) * |
||
+ | * * |
||
+ | * Second series * |
||
+ | * * |
||
+ | * Listing number 4 * |
||
+ | ********************************************************************** |
||
+ | * Program self-modification |
||
+ | INCLUDE "B:\START.S" startup routine |
||
+ | MOVE.L #MESSAGE1,-(SP) introducing |
||
+ | MOVE.W #9,-(SP) the program |
||
+ | TRAP #1 |
||
+ | ADDQ.L #6,SP |
||
+ | START MOVE.W #7,-(SP) waiting for a key press |
||
+ | TRAP #1 |
||
+ | ADDQ.L #2,SP |
||
+ | CMP.W #" ",D0 space? |
||
+ | BEQ END yes, so goodbye |
||
+ | MOVE.W #$4E71,VARIANT places a NOP (by default) |
||
+ | CMP.W #"A",D0 press 'A'? |
||
+ | BNE HERE no |
||
+ | BSR ROUTINE yes, so long subroutine |
||
+ | BRA START and start over |
||
+ | HERE MOVE.W #$4E75,VARIANT places a RTS instead |
||
+ | BSR ROUTINE of the NOP and goes to subroutine |
||
+ | BRA START then starts over |
||
+ | |||
+ | END MOVE.W #0,-(SP) |
||
+ | TRAP #1 |
||
+ | *--------------------------------------------* |
||
+ | ROUTINE MOVE.L #MESSAGE2,-(SP) |
||
+ | MOVE.W #9,-(SP) |
||
+ | TRAP #1 |
||
+ | ADDQ.L #6,SP |
||
+ | VARIANT NOP |
||
+ | MOVE.L #MESSAGE3,-(SP) |
||
+ | MOVE.W #9,-(SP) |
||
+ | TRAP #1 |
||
+ | ADDQ.L #6,SP |
||
+ | RTS |
||
+ | *--------------------------------------------* |
||
+ | SECTION DATA |
||
+ | MESSAGE1 DC.B 27,"E","Press A for a long message,",13,10 |
||
+ | DC.B "space to exit, another key",13,10 |
||
+ | DC.B "for a shorter message",13,10,0 |
||
+ | EVEN |
||
+ | MESSAGE2 DC.B 13,10,"Here's the short message...",0 |
||
+ | EVEN |
||
+ | MESSAGE3 DC.B "Oops, no, it's the long one!!!",0 |
||
+ | EVEN |
||
+ | SECTION BSS |
||
+ | DS.L 100 |
||
+ | STACK DS.L 1 |
||
+ | END |
||
+ | |||
+ | Back to [[ASM_Tutorial]] |
||
+ | [[Category: 68000 ASSEMBLER on ATARI ST Part 1 ]] |
Revision as of 00:52, 17 December 2023
- *
- 68000 ASSEMBLER COURSE ON ATARI ST *
- *
- by The Fierce Rabbit (from 44E) *
- *
- Second series *
- *
- Listing number 4 *
- Program self-modification
INCLUDE "B:\START.S" startup routine MOVE.L #MESSAGE1,-(SP) introducing MOVE.W #9,-(SP) the program TRAP #1 ADDQ.L #6,SP
START MOVE.W #7,-(SP) waiting for a key press
TRAP #1 ADDQ.L #2,SP CMP.W #" ",D0 space? BEQ END yes, so goodbye MOVE.W #$4E71,VARIANT places a NOP (by default) CMP.W #"A",D0 press 'A'? BNE HERE no BSR ROUTINE yes, so long subroutine BRA START and start over
HERE MOVE.W #$4E75,VARIANT places a RTS instead
BSR ROUTINE of the NOP and goes to subroutine BRA START then starts over
END MOVE.W #0,-(SP)
TRAP #1
- --------------------------------------------*
ROUTINE MOVE.L #MESSAGE2,-(SP)
MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP
VARIANT NOP
MOVE.L #MESSAGE3,-(SP) MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP RTS
- --------------------------------------------*
SECTION DATA
MESSAGE1 DC.B 27,"E","Press A for a long message,",13,10
DC.B "space to exit, another key",13,10 DC.B "for a shorter message",13,10,0 EVEN
MESSAGE2 DC.B 13,10,"Here's the short message...",0
EVEN
MESSAGE3 DC.B "Oops, no, it's the long one!!!",0
EVEN SECTION BSS DS.L 100
STACK DS.L 1
END
Back to ASM_Tutorial