Rev 539 | Blame | Compare with Previous | Last modification | View Log | Download
# file opened: s_macros.asm1 0000 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2 0000 ;;; see listing file for resulting macro expansion3 0000 ;;; in each example4 00005 0000 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6 0000 ;;; Macro without parameters7 00008 0000 MACRO ADD_HL_A9 0000 ~ ADD A,L10 0000 ~ JR NC,.hup11 0000 ~ INC H12 0000 ~ .hup13 0000 ~ LD L,A14 0000 ENDM15 000016 0000 ADD_HL_A16 0000 85 > ADD A,L16 0001 30 01 > JR NC,.hup16 0003 24 > INC H16 0004 >.hup16 0004 6F > LD L,A17 000518 0005 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19 0005 ;;; A macro with parameters20 000521 0005 MACRO WAVEOUT reg, data22 0005 ~ LD A,reg23 0005 ~ OUT (7EH),A24 0005 ~ LD A,data25 0005 ~ OUT (7FH),A26 0005 ENDM27 000528 0005 WAVEOUT 2,1728 0005 3E 02 > LD A,228 0007 D3 7E > OUT (7EH),A28 0009 3E 11 > LD A,1728 000B D3 7F > OUT (7FH),A29 000D30 000D ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31 000D ;;; Another example32 000D33 000D MACRO LOOP34 000D ~ IF $-.lus<12735 000D ~ DJNZ .lus36 000D ~ ELSE37 000D ~ DEC B38 000D ~ JP NZ,.lus39 000D ~ ENDIF40 000D ENDM41 000D42 000D Main43 000D .lus44 000D CD 12 00 CALL DoALot45 0010 LOOP45 0010 > IF $-.lus<12745 0010 10 FB > DJNZ .lus45 0012 > ELSE45 0012 ~ > DEC B45 0012 ~ > JP NZ,.lus45 0012 > ENDIF46 0012 DoALot:47 001248 0012 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49 0012 ;;; Argument in angle brackets50 001251 0012 MACRO UseLess data52 0012 ~ DB data53 0012 ENDM54 001255 0012 UseLess <10,12,13,0>55 0012 0A 0C 0D 00 > DB 10,12,13,056 0016 ; use '!' to include '!' and '>' in those strings.57 0016 UseLess <5, 6 !> 3>57 0016 05 FF > DB 5, 6 > 358 0018 UseLess <"Kip!!",3>58 0018 4B 69 70 21 > DB "Kip!",358 001C 03 >59 001D60 001D ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61 001D ;;; Macro name at beginning of line62 001D63 001D LabelAsMacroName MACRO arg1?, arg2?64 001D ~ ld a,arg1?65 001D ~ ld hl,arg2?66 001D ENDM67 001D68 001D LabelAsMacroName 1,$123468 001D 3E 01 > ld a,168 001F 21 34 12 > ld hl,$123469 002270 0022 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;71 0022 ;;; Inhibit macro expansion operator72 002273 0022 djnz MACRO arg1?74 0022 ~ dec c75 0022 ~ jr nz,arg1?76 0022 ~ @djnz arg1? ; avoid self-reference and use real instruction77 0022 ENDM78 002279 0022 1: djnz 1B ; macro replacement will be used here79 0022 0D > dec c79 0023 20 FD > jr nz,1B79 0025 10 FB > @djnz 1B ; avoid self-reference and use real instruction80 0027 10 FE 1: @djnz 1B ; original djnz instruction here81 0029# file closed: s_macros.asmValue Label------ - -----------------------------------------------------------0x0004 0>hup0x0012 DoALot0x000D X Main0x000D Main.lus