$NOLIST ; I am very lazy when it comes to rewrites of instructions after crossing ; page boundries. Each time the program I was working on became large ; enough to generate errors because of relative addressing errors, I only ; had to change the first character to correct the problem. ; example: SJMP => AJMP or AJMP => LJMP ; AJNB MACRO BNUM,ADDR ;;CONVERT SJMP TO PAGE JUMP JB BNUM,$+5 AJMP ADDR ENDM ; LJNB MACRO BNUM,ADDR ;;CONVERT PAGE JUMP TO LONG JUMP JB BNUM,$+6 ;;THIS DESTROYS RELOCATION FEATURE! LJMP ADDR ENDM ; AJB MACRO BNUM,ADDR ;;ALLOW JB 2K ACCESS JNB BNUM,$+5 AJMP ADDR ENDM ; LJB MACRO BNUM,ADDR ;;ALLOW JB 64K ACCESS JNB BNUM,$+6 ;;DESTROYS RELOCATION FEATURE LJMP ADDR ENDM ; TJE MACRO REG,VALUE,ADDR ;;SJMP ON EQUAL CJNE REG,VALUE,$+5 SJMP ADDR ; EQUAL ENDM ; ATJE MACRO REG,VALUE,ADDR ;;AJMP ON EQUAL CJNE REG,VALUE,$+5 AJMP ADDR ; EQUAL ENDM ; ACJNE MACRO REG,VALUE,ADDR ;;ALLOW CJNE 2K ACCESS CJNE REG,VALUE,$+5 SJMP $+4 ; EQUAL AJMP ADDR ; NOT = ENDM ; TLE MACRO REG,VALUE,ADDR ;;MACRO DEF TO MAKE JUMP LESS THAN OR = CJNE REG,VALUE+1,$+3 JC ADDR ; REG < OR = VALUE ENDM ; ATLE MACRO REG,VALUE,ADDR ;;MACRO DEF JUMP < OR = CJNE REG,VALUE+1,$+3 JNC $+4 AJMP ADDR ; REG < OR = VALUE ENDM ; SCASE MACRO REG,VALUE,LESS,EQUAL,GREATER ;; ALL TESTS AT ONCE CJNE REG,VALUE,$+3 JC LESS ; REG < VALUE CJNE REG,VALUE+1,$+3 JC EQUAL ; REG = VALUE SJMP GREATER ; REG > VALUE ENDM ; ACASE MACRO REG,VALUE,LESS,EQUAL,GREATER ;; ALL TESTS AT ONCE CJNE REG,VALUE,$+3 ;; 2K (PAGE) RELOCATION JNC $+4 AJMP LESS ; REG < VALUE CJNE REG,VALUE+1,$+3 JC $+4 AJMP GREATER ; REG > VALUE AJMP EQUAL ; REG = VALUE ENDM ; LCASE MACRO REG,VALUE,LESS,EQUAL,GREATER ;; ALL TESTS AT ONCE CJNE REG,VALUE,$+3 ;; NO RELOCATION JNC $+4 LJMP LESS ; REG < VALUE CJNE REG,VALUE+1,$+3 JC $+4 LJMP GREATER ; REG > VALUE LJMP EQUAL ; REG = VALUE ENDM ; ;THE FOLLOWING LINE MUST BE ADDED TO THE BEGINNING OF THE EXPANSION PROG! ;TOKEN_NUM SET 0FH ; USER TOKENS START AT 10H ; MAKE_TOKEN MACRO TOK_TXT ;; FORMAT BASIC-52 USER TOKEN TOKEN_NUM SET TOKEN_NUM+1 ;; NEXT TOKEN # TO USE DB TOKEN_NUM ;; THE TOKEN # FOR DB TOK_TXT ;; TOK_TXT USER-TOKEN DB 00H ;; END OF TOKEN ENDM $LIST