* ******************************** * * * -< STRINGS DEMO >- * * * * VERSION 00.00.01 * * * * 03/04/1980 * * * ******************************** * * * NATHAN D. RIGGS * * NATHAN.RIGGS@OUTLOOK.COM * * * ******************************** * ** ASSEMBLER DIRECTIVES * CYC AVE EXP ONLY DSK STRINGS.DEMO * *``````````````````````````````* * TOP INCLUDES (PUTS, MACROS) * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * PUT DECS USE STRINGS.MAC * PUT STRINGS.HOOKS * OBJ $BFE0 ORG $6000 * *``````````````````````````````* * PROGRAM MAIN BODY * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * * * ** BIG LUMPS -- HIGH LEVEL CODE * * ** STRCMP COMPARES TWO STRINGS, THEN ** SETS THE STATUS REGISTER AS FOLLOWS: * ** Z=1 IF STRINGS ARE IDENTICAL ** Z=0 IF STRINGS NOT IDENTICAL ** C=1 IF STRING2 LENGTH IS > ** C=0 IF STRING1 LENGTH IS > * ** MACRO: * JMP CONT STR1 STR "THIZ IS STRING1" STR2 STR "THIS IS STRING 2" CONT LDA #>STR1 PHA LDA #STR2 PHA LDA #CATSTR PHA LDA #CATSTR2 PHA LDA #CATSTR LDY #CATSTR ; FROM PREVIOUS EXAMPLE PHA LDA #$300 ; DESTINATION PHA LDA #<$300 PHA LDA #>11111 ; VALUE TO CONVERT PHA LDA #<11111 PHA JSR NUM2STR *BRK * * $300 SHOULD NOW HOLD 05,B1,B1,B1,B1,B1 * * * ** STR2NUM DOES THE OPPOSITE OF NUM2STR: IT ** RETURNS THE NUMBER EQUIVALENT OF A STRING ** AND HOLDS THEM IN X (HIGH) AND Y (LOW) * LDA #>$300 ; STRING FROM PREVIOUS PHA LDA #<$300 PHA JSR STR2NUM *BRK ; X,Y HOLDS 2B67, #11111 * * ** SUBPOS RETURNS THE POSITION OF A SUBSTRING ** WITHIN A PARENT STRING. * LDA #>STR ; STRING ADDRESS PHA LDA #SUB ; SUBSTRING ADDRESS PHA LDA #STR11 ; SOURCE STRING PHA LDA #STR21 PHA LDA #STR21 LDY #STR11 ; STRING LOCATION PHA LDA #STR11 LDY #INS1 ; DESTINATION PHA LDA #INS2 ; SOURCE SUBSTRING PHA LDA #INS1 *BRK ; MEMLOC IN XY NOW HAS INS2 INSERTED INTO INS1 * AT LOCATION 3 * ** DATA * INS1 STR "XXXXXXXXX" ZZZ STR "999999999" INS2 STR "111111111" * * * * ** LITTLE LUMPS -- MID/LOW LEVEL * * JMP REENTRY * *``````````````````````````````* * BOTTOM INCLUDES * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * * ** BOTTOM INCLUDES * PUT STRINGS.LIB PUT SUBSTRINGS.LIB *