home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol064 / space.src < prev    next >
Text File  |  1984-04-29  |  2KB  |  122 lines

  1. ;TYPE
  2. ;$STRING80 = STRING 80;
  3. ;$STRING0 = STRING 0;
  4. ;$STRING255 = STRING 255;
  5. ;BYTE = 0..255;
  6. ;VAR
  7. ;DATA:$STRING255;
  8. ;NUMBER:INTEGER;
  9. ;
  10. ;FUNCTION LENGTH(X:$STRING255):INTEGER;EXTERNAL;
  11.     EXTD    L168,LENGTH  
  12. ;PROCEDURE SETLENGTH(VAR X:$STRING0; Y:INTEGER);EXTERNAL;
  13.     EXTD    L169,SETLENGT
  14. ;
  15. ;{function to return "x" number of spaces to a write command or statement..
  16. ;corresponds to BASIC commands such as SPACE$(X) or TAB(x)...
  17. ;although in structured programming, it is stylistically better to format
  18. ;output using format commands such as x:9:2 for a real number or 
  19. ;name:30 for a string, this function is often useful in designing a layout,
  20. ;and certainly is more "readable" in a program...}
  21. ;
  22. ;
  23. ;FUNCTION SPACE(X:BYTE):$STRING255; 
  24. ;VAR
  25. ;I:INTEGER;
  26. ;S:$STRING255;
  27. ;
  28. ;BEGIN
  29. L170
  30.     NAME SPACE
  31.     ENTRY SPACE
  32. SPACE:
  33.     ENTR    D,2,258
  34. ;SETLENGTH(S,0);
  35.     STMT    D,1
  36.     PUSH    IX
  37.     POP    H
  38.     DCX    H
  39.     DCX    H
  40.     PUSH    H
  41.     MOV    H,A
  42.     MOV    L,A
  43.     PUSH    H
  44.     CALL    L169
  45. ;IF (X > 0) AND (X < 256) THEN FOR I:=1 TO X DO APPEND(S,' ');
  46.     STMT    D,2
  47.     MOV    H,A
  48.     MOV    L,8(IX)
  49.     MVI    A,0
  50.     CMP    L
  51.     MOV    A,H
  52.     JNC    L187
  53.     MOV    H,A
  54.     MOV    L,8(IX)
  55.     LXI    D,256
  56.     LESS    D,0
  57.     JNC    L184
  58.     STMT    D,3
  59.     MOV    0(IX),A
  60.     MVI    -1(IX),1
  61.     PUSH    IX
  62.     MOV    H,A
  63.     MOV    L,8(IX)
  64.     XTHL
  65. L209
  66.     MOV    D,M
  67.     DCX    H
  68.     MOV    E,M
  69.     XTHL
  70.     PUSH    H
  71.     GE    D,0
  72.     JNC    L210
  73.     STMT    D,4
  74.     PUSH    IX
  75.     POP    H
  76.     DCX    H
  77.     DCX    H
  78.     PUSH    H
  79.     LXI    H,255
  80.     PUSH    H
  81.     LXI    H,288
  82.     PUSH    H
  83.     LXI    H,2
  84.     PUSH    H
  85.     CALL    L137
  86.     CTRL    M,4
  87.     POP    H
  88.     XTHL
  89.     INR    M
  90.     INX    H
  91.     JRNZ    L229
  92.     INR    M
  93.     JV    L230
  94. L229
  95.     JMP    L209
  96. L210
  97.     POP    D
  98. L230
  99.     POP    D
  100. L184
  101. L186    EQU    L184
  102. L187    EQU    L186
  103. ;
  104. ;SPACE:=S;
  105.     STMT    D,5
  106.     PUSH    IX
  107.     POP    H
  108.     DCX    H
  109.     DCX    H
  110.     RCHK    S,255
  111.     XCHG
  112.     PUSH    IX
  113.     POP    H
  114.     LXI    B,264
  115.     DADD    B
  116.     XCHG
  117.     LXI    B,256
  118.     LDDR
  119. ;END;
  120.     STMT    D,6
  121.     EXIT    D,1
  122.