home *** CD-ROM | disk | FTP | other *** search
/ norge.freeshell.org (192.94.73.8) / 192.94.73.8.tar / 192.94.73.8 / pub / computers / cpm / alphatronic / PASCALZ4.ZIP / D3 / EOFLN.SRC < prev    next >
Text File  |  1999-04-05  |  2KB  |  86 lines

  1. ;ROUTINES FOR EOLN,EOF,AND FOR FILLING THE TXTIN BUFFER
  2. ;
  3.     NAME EOFLN
  4.     ENTRY .EOLN,.EOF,.FTXTIN,L120,L121,L124
  5.     EXT .TOUT,.TIN,.MTRUE,.MTRU1,.FALSE
  6.     INCLUDE DEFLT.SRC
  7. ;
  8. ;EOLN RETURNS THE CARRY SET IF THE END OF LINE FLAG IN THE BUFFER
  9. ;IS SET AND RETURNS THE CARRY RESET IF IT ISN'T. IT EXPECTS HL TO CONTAIN
  10. ;THE FILE BUFFER ADDRESS.
  11. ;MUST BE CALLED WITH A 0
  12. ;EOLN( 0 ) IS DEFINED AS EOLN ON THE CONSOLE
  13. ;EOLN MUST PRESERVE REGISTERS BECAUSE IT IS CALLED BY INPUT ROUTINES
  14.  
  15. L120:
  16. .EOLN:    XRA    A
  17.     PUSH    H
  18.     CMP    H        ;CHECK FOR CONSOLE POINTER
  19.     JRNZ    FEOLN        ;NO...CHECK FILE EOLN
  20. CONLN:    PUSH    D
  21.     LHLD    6
  22.     LXI    D,-PUTP
  23.     DAD    D
  24.     MOV    A,M        ; A := fill pointer.
  25.     DCX    H
  26.     CMP    M        ; fill pointer - text_in_pointer
  27.     JC    .MTRU1        ; Branch if end of line.
  28.     MOV    E,M
  29.     MVI    D,0
  30.     DAD    D
  31.     INX    H        ; HL points to next character to read.
  32.     MOV    A,M
  33.     CPI    CR        ; EOLN is also true if we about to read a CR.
  34.     JZ    .MTRU1
  35.     POP    D
  36.     POP    H
  37.     JMP    .FALSE
  38.  
  39. FEOLN:
  40.     BIT    7,M    ;IS THIS A 'CON:' CONSOLE FILE VARIABLE
  41.     JRNZ    CONLN    ; YES, TEST AS A CONSOLE FILE
  42.     BIT    0,M    ;TEST EOLN FLAG, BIT 0 OF BYTE 1 OF BUFFER
  43.     POP    H
  44.     JZ    .FALSE
  45.     JMP    .MTRUE
  46.  
  47. ;EOF RETURNS THE CARRY SET IF END OF FILE IS TRUE AND RESET IF IT IS
  48. ;FALSE. IT EXPECTS HL TO CONTAIN THE BUFFER ADDRESS.
  49. ;A REG MUST BE 0
  50.  
  51. L121:
  52. .EOF:    XRA    A
  53.     CMP    H        ;FOR CONSOLE FILES END OF FILE IS ALWAYS FALSE
  54.     JZ    .FALSE
  55.     BIT    7,M        ;IS THIS A 'CON:' CONSOLE FILE
  56.     JNZ    .FALSE        ;YES, CONSOLE EOF IS ALWAYS FALSE
  57.     BIT    1,M        ;EOF FLAG,BIT 1 OF BYTE 1 OF BUFFER
  58.     JNZ    .MTRUE
  59.     JMP    .FALSE
  60.  
  61.  
  62. ;FTXTIN ALLOWS THE USER TO FILL THE PASCAL TXTIN BUFFER
  63. L124:
  64. .FTXTIN:    MOV    H,A        ;SET HL TO LENGTH OF STRING+1
  65.     MOV    L,C
  66.     INX    H
  67.     DAD    SP        ;POINT TO STRING
  68.     PUSH    H        ;SAVE THIS POINTER
  69.     MOV    B,C        ;MOVE COUNT TO B-REGISTER
  70. FTXT2:    CALL    .TIN        ;FIRST EMPTY THE BUFFER
  71.     CPI    CR
  72.     JRNZ    FTXT2
  73. FTXT3:    MOV    C,M        ;GET CHAR
  74.     CALL    .TOUT
  75.     DCX    H        ;BUMP POINTER
  76.     DJNZ    FTXT3        ;CHECK FOR MORE
  77.     MVI    C,CR
  78.     CALL    .TOUT        ;ADD A CR
  79.     POP    H
  80.     POP    D        ;GET RETURN ADDRESS
  81.     INX    H        ;FIX STACK
  82.     SPHL
  83.     XRA    A
  84.     XCHG            ;AND...
  85.     PCHL            ;...RETURN
  86.