home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug035.ark / OBJECT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  72 lines

  1. ; 6 SEPT 79 - FIXING OBJR,OBJW TO AVOID ACCESS TO OBJECTS
  2. ; BEYOND 16. COMBINING SOURCE FILE WITH INOUT.ASM.
  3. ;
  4. ;
  5.     ORG    5125H
  6. * THESE TWO ROUTINES (OBJR & OBJW) READ AND WRITE GIVEN BYTES
  7. * OF A GIVEN OBJECT.  THE OBJECT TABLE IS LOCATED AT 1000 HEX AND IS DESCRIB
  8. * IN DETAIL IN THE FELIX 8080 IMPLEMENTATION MANUAL
  9. *
  10. HIBITZ    EQU    010H
  11. * OBJR RETURNS IN A THE E-TH (0 <= E <= 256) OF THE D-TH (0<= D <= 15) OBJEC
  12. OBJR:    PUSH    D
  13.     MOV    A,D
  14.     ANI    0FH    ;SELECT OBJECT 0 - 15
  15.     ORI    HIBITZ    ;AND GET RIGHT PART OF WORLD
  16.     MOV    D,A    ;    TO THE PROPER BYTE OF THE OBJECT IN QUESTION
  17.     LDAX    D    ;    READ THE BYTE AND RETURN WITH IT
  18.     POP    D
  19.     RET
  20. * OBJW PUTS THE CONTENTS OF A INTO THE E-TH (0 <=E <= 256)
  21. * BYTE OF THE D-TH (0 <= D <= 15) OBJECT
  22. OBJW:    PUSH    D
  23.     PUSH    PSW    ;    SAVE THE CONTENTS OF A FOR LATER
  24.     MOV    A,D
  25.     ANI    0FH    ;SELECT OBJECT 0 - 15
  26.     ORI    HIBITZ    ;AND GET RIGHT AREA.
  27.     MOV    D,A    ;    TO THE PROPER BYTE OF THE OBJECT IN QUESTION
  28.     POP    PSW    ;    RETRIEVE THE BYTE WE WANT WRITTEN
  29.     STAX    D    ;    AND WRITE IT
  30.     POP    D
  31.     RET
  32.     ORG    513BH
  33. CR    EQU    0DH
  34. LF    EQU    0AH
  35. * THIS ROUTINE OUTPUTS A CARRIAGE RETURN AND LINE-FEED TO
  36. * THE TERMINAL BY LOADING THE CHARACTERS INTO A AND
  37. * USING THE ROUTINE "CO" DESCRIBED BELOW.
  38. CRLF:    PUSH    PSW
  39.     MVI    A,CR
  40.     CALL    CO
  41.     MVI    A,LF
  42.     CALL    CO
  43.     POP    PSW
  44.     RET
  45. BIOS    EQU    05H
  46. * THIS ROUTINE GETS A CHARACTER FROM THE TELETYPE USING
  47. * THE BUILT-IN CPM ROUTINE AND RETURNS IT IN THE ACCUMULATOR.
  48. * THE CHARACTER IS ECHOED.
  49. CI:    PUSH B ! PUSH D ! PUSH H
  50.     MVI    C,1
  51.     CALL    BIOS
  52.     POP  H ! POP D ! POP B
  53.     RET
  54. * THIS ROUTINE TAKES A CHARACTER FROM THE ACCUMULATOR
  55. * AND SENDS IT OUT TO THE TELETYPE USING THE BUILT-IN
  56. * CPM ROUTINE.  THE CPM ROUTINE DESTROYS A, SO WE SAVE IT.
  57. CO:    PUSH PSW !PUSH B ! PUSH D ! PUSH H
  58.     MVI    C,2
  59.     MOV    E,A
  60.     CALL    BIOS
  61.     POP H !POP D ! POP B ! POP PSW
  62.     RET
  63. * THIS ROUTINE PRINTS A STRING OF CHARACTERS POINTED TO BY
  64. * HL (TO THE TTY, NATURALLY) USING THE BUILT-IN CPM ROUTINE.
  65. * THE END OF THE STRING IS INDICATED BY THE CHARACTER "$".
  66. PRINT:    PUSH B ! PUSH D ! PUSH H
  67.     XCHG
  68.     MVI    C,9
  69.     CALL    BIOS
  70.     POP H ! POP D ! POP B
  71.     RET
  72.