sasnt: ex de,hl ; USRRET=PLAD to DRDE; UDRDE to DRHL; ex (sp),hl ; UDRDE to TOS; FRRET to DRHL; push bc ; UDRBC to TOS; push af ; UDRPSW&A to TOS; ex de,hl ; USRRET=-PLAD to DRHL; FRRET to DRDE; jp frntd ; Go load only one field addr ; and length parameter; dasnt: ex de,hl ; USRRET=PLAD to DRDE; UDRDE to DRHL; ex (sp),hl ; UDRDE to TOS; FRRET to DRHL; push bc ; UDRBC to TOS; push af ; UDRPSW&A to TOS; ex de,hl ; USRRET=PLAD to DRHL; FRRET to DRDE; ld c,(hl) ; FIELD1 addr LOB to SRC; inc hl ; Incr USRRET=-PLAD (+1 DASNT); ld b,(hl) ; FIELD1 addr HOB to SRB; inc hl ; Incr USRRET=PLAD (+2 DASNT); frntd: push de ; FRRET to TOS; ld e,(hl) ; FIELD/FIELD2 addr LOB to SRE; inc hl ; Incr USRRET=PLAD (+3 DASNT; +1 SASNT); ld d,(hl) ; FIELD/FIELD2 addr HOB to SRD; inc hl ; Incr USRRET=PLAD (+4 DASNT;+2 SASNT); ld a,(hl) ; Length/Size param to SRA; inc hl ; Incr USRRET=PLAD (+5 DASNT;+3 SASNT); ex (sp),hl ; True USRRET to TOS; FRRET to DRHL; push hl ; FRRET to TOS; ld h,a ; Length/Size param to SRH; ret ; Return to calling function routine; dasxr: ex (sp),hl ; UDRHL to TOS; FRRET=FRCOMMAND ; address to TOS; ld (dasfc+1),hl ; Store FRCOMMAND address in CALL; pop hl ; TOS=UDRHL to DRHL clear return; ex (sp),hl ; UDRHL to TOS; USRRET=PLAD to DRHL; call dasnt ; Call DASNT to load parameters; dasxl: ld a,(de) ; Indexed FIELD2 char to SRA; ld l,a ; Move into SRL; ld a,(bc) ; Indexed FIELD1 char to SRA; dasfc: call 000000o ; Call the execution commands; ld (bc),a ; Store result in indexed FIELD1; inc bc ; Incr FIELD1 address index; inc de ; Incr FIELD2 address index; dec h ; Decrement length/size; jp nz,dasxl ; Loop until count is zero; frxit: pop hl ; True USRRET to DRHL; pop bc ; UDRPSW&A to DRBC; ld a,b ; USRA to SRA; PSW=FRPSW; frxt2: pop bc ; TOS=UDRBC to DRBC; pop de ; TOS=UDRDE to ORDE; ex (sp),hl ; True USRRET to TOS; TOS=UDRHL to DRHL; ret ; Return to user; regs+user regs; nchr: call dasxr ; CALL DASXR execution control rtn ; passing address of following; and l ; Logical AND SRL to SRA; ret ; Return to DASXR; ochr: call dasxr ; See NCHR comment at address 071; or l ; Logical OR SRL to SRA; ret ; Return to DASXR; xchr: call dasxr ; See NCHR comment at address 071; xor l ; Logical XOR SRL to SRA; ret ; Return to DASXR; mvchr: call dasxr ; See NCHR comment at address 071; ld a,l ; Move SRL to SRA; ret ; Return to DASXR; swchr: call dasxr ; See NCHR comment at address 071; ld (de),a ; SRA to indexed FIELD2 char; ld a,l ; Move SRL to SRA: ret ; Return to DASXR; clchr: call dasxr ; See NCHR comment at address 071; cp l ; Compare SRL to SRA; ret z ; Return to DASXR if equal; ccf ; Else reverse inequality flag; pop hl ; Clear return address by popping; jp frxit ; Bust out to function exit logic; sasix: ex (sp),hl ; UDRHL to TOS; FRRET=FRCOMMAND ; address to TOS; ld (sasic+1),hl ; Store FRCOMMAND address in CALL; pop hl ; TOS=UDRHL to DRHL clear return; ex (sp),hl ; UDRHL to TOS; USRRET=PLAD to DRHL; call sasnt ; Call SASNT to load Parameters; ex (sp),hl ; USRRET=PLAD+3 to DRHL; FDRHL to TOS; ld a,(hl) ; Immediate character value to SRL; inc hl ; Incr USRRET=PLAD (+4 immed group); ex (sp),hl ; True USRRET to TOS; FDRHL to DRHL; ld l,a ; Move ICV to SRL; sasil: ld a,(de) ; Indexed FIELD char to SRA; sasic: call 000000o ; CALL the execution commands; ld (de),a ; Store result in indexed FIELD; inc de ; Incr FIELD address Index; dec h ; Decrement length/size; jp nz,sasil ; Loop until count is zero; jp frxit ; Jump to funct routine exit logic; nich: call sasix ; CALL SASIX execution control rtn ; passing address of following; and l ; Logical AND SRL=ICV to SRA; ret ; Return to SASIX; oich: call sasix ; See NICH comment at address 170; or l ; Logical OR SRL to SRA; ret ; Return to the SASIX routine; xich: call sasix ; See NICH comment at address 170: xor l ; Logical XOR SRL to SRA; ret ; Return to SASIX; mvich: call sasix ; See NICH comment at address 170; ld a,l ; Move SRL to SRA; ret ; Return to SASIX; valfx: ex (sp),hl ; UDRHL to TOS; FRRET=FRCOMMAND ; address to DRHL; ld (valfc+1),hl ; Store FRCOMMAND address in CALL; pop hl ; TOS=UDRHLto DRHL clear return; ex (sp),hl ; UDRHL to TOS; USRRET=PLAD to DRHL; call sasnt ; Call SASNT to load parameters; valfl: ld a,(de) ; Indexed FIELD character to SRA; valfc: call 000000o ; CALL the execution commands; jp nz,frxit ; If character not valid exit; inc de ; Incr FIELD address Index; dec h ; Decrement length/size; jp nz,valfl ; Loop until count Is zero; jp frxit ; Jump to exit all chars valid; valas: call valfx ; CALL VALFX execution control rtn ; passing address of following; valac: cp 040o ; Is SRA a space? ret z ; Return to VALFX if equal; valao: cp 101o ; Is SRA an 'A'? ret c ; Return to VALFX if less than 'A'; cp 132o ; Is SRA a 'Z' valxt: ret z ; Return to VALFX if equal; ret nc ; Return to VALFX if greater; cp a ; Compare SRA to SRA force Z=1; ret ; Return to VALFX char is valid; valns: call valfx ; See VALAS comment at addr 244; valnc: cp 060o ; Is SRA a '0'? ret c ; Return to VALFX if less; cp 071o ; Is SRA a '9' jp valxt ; Jump to validation exit logic; valos: call valfx ; See VALAS comment at addr 244; valoc: cp 060o ; Is SRA a '0'? ret c ; Return to VALFX if less; cp 067o ; Is SRA a '7'? jp valxt ; Jump to valicfation exit logic; valxs: call valfx ; See VALAS comment at addr 244; valxc: call valac ; Call VALAC utility routine; ret z ; Return to VALFX if alphabetic; call valnc ; Call VALNC utility routine; ret ; Return to VALFX; valhs: call valfx ; See VALAS comment at addr 244; valhc: call valnc ; Call VALNC utility routine; ret z ; Return to VALFX if numeric; cp 101o ; Is SRA an 'A'? ret c ; Return to VALFX if less; cp 106o ; Is SRA an 'F'? jp valxt ; Jump to validation exit logic; mvsym: ex (sp),hl ; UDRHL to TOS; USRRET=PLAD to DRHL; call dasnt ; Call DASNT function entry rtn; ex (sp),hl ; USRRET=PLAD+5 to DRHL; FDRHL to TOS; ld a,(hl) ; Move stop char to SRA; inc hl ; Incr USRRET=TRUERET=PLAD+6; ex (sp),hl ; True USRRET to TOS; FRDHL to DRHL; ld l,a ; Move stop char from SRA to SRL; push hl ; DRHL to TOS for length moved calc; mvsyl: ld a,(de) ; Indexed FIELD2 char to SRA; cp l ; Compare it to stop char; jp z,mvsyx ; If equal go to MVSYM exit logic; ld (bc),a ; Else store in indexed FIELD1; inc bc ; Incr FIELD1 address Index; inc de ; Incr FIELD2 address index; dec h ; Decrement length/size; jp nz,mvsyl ; Loop until count is zero; mvsyx: pop af ; DRHL from 354 is popped SRA=len; sub h ; Subtr remaining len = moved len, pop hl ; True USRRET to DRHL; pop bc ; UDRPSW&A discarded by this pop; jp frxt2 ; Exit skipping SRA restore;