home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cpm / comm / zmodem / zmo-hp12.zz0 / ZMO-HP12.Z80
Text File  |  1989-04-26  |  14KB  |  640 lines

  1. ;-----------------------------------------------------------------------------
  2.  
  3. ;
  4.  
  5. ;oVERLAY FOR zmp FFOR hp12x                     
  6.  
  7. ;
  8.  
  9. ;nAMEZMO-HP.AZM   
  10.  
  11. ;
  12.  
  13. ;SET UP FOR COMPILE WITH Z80MR
  14.  
  15. ;
  16.  
  17. ;wRITTEN BY -
  18.  
  19. ;  rON mURRAY, C/O z-nODE 62, 061-9-450-0200, pERTH, wESTERN aUSTRALIA.
  20.  
  21. ;
  22.  
  23. ; 89/04/12 - mODIFIED TO zmp V1.5- gEORGE cONOVER
  24.  
  25. ;mODIFIED TO zmp V1.2 STANDARD RJM 15/9/88
  26.  
  27. ;mODIFIED TO zmp V1.3 STANDARD RJM 11/10/88
  28.  
  29. ;mODIFIED TO zmp V1.4 STANDARD RJM 20/11/88
  30.  
  31. ;       aDDED hp CODE mwr 2/8/89
  32.  
  33. ;       aTTEMP AT CORRECT CURSOR CONTRL 2/10/89
  34.  
  35. ;
  36.  
  37. ;-----------------------------------------------------------------------------
  38.  
  39. ;
  40.  
  41. ;
  42.  
  43. ;sYSTEM-DEPENDENT CODE OVERLAY FOR zmodem
  44.  
  45. ;
  46.  
  47. ;
  48.  
  49. ;
  50.  
  51. ;    iNSERT YOUR OWN CODE AS NECESSARY IN THIS FILE. cODE CONTAINED HEREIN
  52.  
  53. ; HAS BEEN WRITTEN IN z80 CODE FOR USE WITH m80 OR slr. aSSEMBLE AS FOLLOWS:
  54.  
  55. ;
  56.  
  57. ;slr zmo-XX01/H
  58.  
  59. ;mload zmp.com=zmodem.com,zmo-XX01.hex
  60.  
  61. ; OR
  62.  
  63. ;m80 =zmo-XX01.z80
  64.  
  65. ;relhex zmo-XX01
  66.  
  67. ;mload zmp.com=zmodem.com,zmo-XX01.hex
  68.  
  69. ;
  70.  
  71. ;
  72.  
  73. ;       (dON'T USE l80 WITHOUT CHANGING THE SOURCE FOR ASSEMBLY AS A
  74.  
  75. ;         CSEG FILE.)
  76.  
  77. ;
  78.  
  79. ;-----------------------------------------------------------------------------
  80.  
  81. ;
  82.  
  83. ;
  84.  
  85. ; nOTES ON MODIFYING THIS FILE:
  86.  
  87. ;
  88.  
  89. ;    c REQUIRES THAT FUNCTIONS DO NOT CHANGE EITHER INDEX REGISTER (ix OR iy).
  90.  
  91. ; iF YOUR OVERLAY REQUIRES EITHER OF THESE TO BE CHANGED, ENSURE THEY ARE
  92.  
  93. ; RESTORED TO THE ORIGINAL VALUES ON RETURN.
  94.  
  95. ;    sINCE COLLECTING PARAMETERS FROM c FUNCTIONS CAN BE TRICKY, ONLY CHANGE
  96.  
  97. ; THE PARTS MARKED 'iNSERT YOUR OWN CODE HERE'. dO not MODIFY THE JUMP
  98.  
  99. ; TABLE AT THE START. dO not MODIFY THE ENTRY/EXIT SECTIONS OF EACH
  100.  
  101. ; FUNCTION. dO not PASS 'go'. dO not COLLECT $200.
  102.  
  103. ;    aPART FROM DEFINING MODEM FUNCTIONS, THIS FILE ALSO DEFINES TERMINAL
  104.  
  105. ; CHARACTERISTICS. eXAMPLES PROVIDED ARE FOR adm-3a (WITH A FEW OF MY OWN
  106.  
  107. ; ADDITIONS). mODIFY TO SUIT YOUR OWN TERMINAL. aN INLINE PRINT ROUTINE
  108.  
  109. ; IS PROVIDED FOR PRINTING STRINGS IN THE USUAL WAY: USAGE IS
  110.  
  111. ;
  112.  
  113. ;CALLPRINT
  114.  
  115. ;DB'REQUIRED STRING',0
  116.  
  117. ;
  118.  
  119. ;-----------------------------------------------------------------------------
  120.  
  121. ;
  122.  
  123. ;
  124.  
  125. ;    dON'T FORGET TO SET YOUR CLOCK SPEED AT THE CLKSPD VARIABLE.
  126.  
  127. ;
  128.  
  129. ;
  130.  
  131. ;    iF YOU FIND YOUR OVERLAY EXCEEDS THE MAXIMUM SIZE (CURRENTLY 0400H),
  132.  
  133. ; YOU WILL HAVE TO CONTACT ME FOR ANOTHER VERSION. iF TOO MANY PEOPLE NEED 
  134.  
  135. ; TO DO IT, WE HAVEN'T ALLOWED ENOUGH ROOM.
  136.  
  137. ;
  138.  
  139. ; rON mURRAY 15/8/88
  140.  
  141. ;
  142.  
  143. ;
  144.  
  145. ;
  146.  
  147. ;---------------------------------------------------------------------------
  148.  
  149.  
  150.  
  151. FALSEEQU0
  152.  
  153. TRUEEQU1        
  154.  
  155.  
  156.  
  157. ;------------------------------------------------------------------------------
  158.  
  159.  
  160.  
  161. ; uSER-SET VARIABLES: 
  162.  
  163.  
  164.  
  165. CLKSPDEQU4; pROCESSOR CLOCK SPEED IN mhZ
  166.  
  167. DEBUGEQUFALSE; TO ALLOW DEBUGGING OF OVERLAY WITH z8e ETC.
  168.  
  169.  
  170.  
  171. ;sET THE FOLLOWING TWO EQUATES TO THE DRIVE AND USER AREA WHICH WILL CONTAIN
  172.  
  173. ;   zmp'S .ovr FILES, .cfg FILE, .fon FILE AND .hlp FILE. sET BOTH TO ZERO
  174.  
  175. ;   (NULL) TO LOCATE THEM ON THE DRIVE FROM WHICH zmp WAS INVOKED.
  176.  
  177.  
  178.  
  179. OVERDRIVEEQU'b'; dRIVE TO FIND OVERLAY FILES ON ('a'-'p')
  180.  
  181. OVERUSEREQU0; uSER AREA TO FIND FILES
  182.  
  183.  
  184.  
  185. ;------------------------------------------------------------------------------
  186.  
  187.  
  188.  
  189.  
  190.  
  191. ; not USER-SET VARIABLES
  192.  
  193.  
  194.  
  195. USERDEFEQU0145H; ORIGIN OF THIS OVERLAY
  196.  
  197. ; tHIS ADDRESS SHOULD NOT CHANGE WITH
  198.  
  199. ; SUBSEQUENT REVISIONS.
  200.  
  201. MSPEEDEQU03CH; LOCATION OF CURRENT BAUD RATE. 
  202.  
  203. OVSIZEEQU0400H; MAX SIZE OF THIS OVERLAY
  204.  
  205.  
  206.  
  207. ORGUSERDEF
  208.  
  209.  
  210.  
  211.  
  212.  
  213. ESCEQU1BH
  214.  
  215. CTRLQEQU11H
  216.  
  217. CREQU0DH
  218.  
  219. LFEQU0AH
  220.  
  221. BDOSEQU5
  222.  
  223.  
  224.  
  225.  
  226.  
  227. CODEBGNEQU$
  228.  
  229.  
  230.  
  231. ;jUMP TABLE FOR THE OVERLAY: DO not CHANGE THIS
  232.  
  233. JUMP_TAB:
  234.  
  235. JPSCRNPR; SCREEN PRINT
  236.  
  237. JPMRD; MODEM READ WITH TIMEOUT
  238.  
  239. JPMCHIN; GET A CHARACTER FROM MODEM
  240.  
  241. JPMCHOUT; SEND A CHARACTER TO THE MODEM
  242.  
  243. JPMORDY; TEST FOR TX BUFFER EMPTY
  244.  
  245. JPMIRDY; TEST FOR CHARACTER RECEIVED
  246.  
  247. JPSNDBRK; SEND BREAK
  248.  
  249. JPCURSADD; CURSOR ADDRESSING
  250.  
  251. JPCLS; CLEAR SCREEN
  252.  
  253. JPINVON; INVERSE VIDEO ON
  254.  
  255. JPINVOFF; INVERSE VIDEO OFF
  256.  
  257. JPHIDE; HIDE CURSOR
  258.  
  259. JPSHOW; SHOW CURSOR
  260.  
  261. JPSAVECU; SAVE CURSOR POSITION
  262.  
  263. JPRESCU; RESTORE CURSOR POSITION
  264.  
  265. JPMINT; SERVICE MODEM INTERRUPT
  266.  
  267. JPINVEC; INITIALISE INTERRUPT VECTORS
  268.  
  269. JPDINVEC; DE-INITIALISE INTERRUPT VECTORS
  270.  
  271. JPMDMERR; TEST UART FLAGS FOR ERROR
  272.  
  273. JPDTRON; TURN dtr ON
  274.  
  275. JPDTROFF; TURN dtr off
  276.  
  277. JPINIT; INITIALISE UART
  278.  
  279. JPWAIT; WAIT SECONDS
  280.  
  281. JPMSWAIT; WAIT MILLISECONDS
  282.  
  283. JPUSERIN; USER-DEFINED ENTRY ROUTINE
  284.  
  285. JPUSEROUT; USER-DEFINED EXIT ROUTINE
  286.  
  287. JPGETVARS; GET SYSTEM VARIABLES
  288.  
  289.   jpsetport; sET PORT (0 OR 1)
  290.  
  291.  
  292.  
  293. ; sPARE JUMPS FOR COMPATIBILITY WITH FUTURE VERSIONS
  294.  
  295. JPSPARE; SPARE FOR LATER USE
  296.  
  297. JPSPARE; SPARE FOR LATER USE
  298.  
  299. JPSPARE; SPARE FOR LATER USE
  300.  
  301. JPSPARE; SPARE FOR LATER USE
  302.  
  303. JPSPARE; SPARE FOR LATER USE
  304.  
  305. JPSPARE; SPARE FOR LATER USE
  306.  
  307.  
  308.  
  309. ;
  310.  
  311. ; mAIN CODE STARTS HERE
  312.  
  313. ;
  314.  
  315. ;sCREEN PRINT FUNCTION
  316.  
  317. SCRNPR:
  318.  
  319. ; <== iNSERT YOUR OWN CODE HERE
  320.  
  321. CALLPRINT
  322.  
  323. DB1BH,'0',0                                
  324.  
  325. ; <== eND OF YOUR OWN CODE
  326.  
  327. SPARE:
  328.  
  329. RET
  330.  
  331.  
  332.  
  333. ; uSER-DEFINED ENTRY ROUTINE: LEAVE EMPTY IF NOT NEEDED
  334.  
  335. USERIN:
  336.  
  337.         LD      BC,73FFH
  338.  
  339.         CALL    BDOS
  340.  
  341. ; MAP READER AND PUNCH TO PORT1
  342.  
  343.         CALL    PRINT
  344.  
  345.         DB      'vERSION FOR hp12x sERIES',CR,LF,0
  346.  
  347.         CALL    PRINT
  348.  
  349.         DB      1BH,'&I0S25D4m',1BH,'&I10S16D4m',CR,LF,0
  350.  
  351. ; TRY AND SET UP VECTORS FOR 8 BITS
  352.  
  353.         LD      BC,7EFFH
  354.  
  355.         LD      DE,JBUF
  356.  
  357.         CALL    BDOS
  358.  
  359.         LD      HL,(JUMP)
  360.  
  361.         LD      (REAL),HL
  362.  
  363.         LD      HL,INEIGHT
  364.  
  365.         LD      (JUMP),HL
  366.  
  367.         LD      A,1
  368.  
  369.         LD      (FLAG),A
  370.  
  371.         LD      BC,7EFFH
  372.  
  373.         LD      DE,JBUF
  374.  
  375.         CALL    BDOS
  376.  
  377. RET
  378.  
  379. ; MORE HP STUFF FOR 8 BIT SETUP
  380.  
  381. INEIGHT:CALL    READIN
  382.  
  383.         LD      A,B
  384.  
  385.         RET
  386.  
  387. ; END OF MORE HP STUFF FOR 8 BIT SETUP
  388.  
  389.  
  390.  
  391. ; uSER-DEFINED EXIT ROUTINE: LEAVE EMPTY IF NOT NEEDED
  392.  
  393. USEROUT:
  394.  
  395. ; BEGIN HP EXIT
  396.  
  397.         CALL    PRINT
  398.  
  399.         DB      1BH,'e',0     ; COLD BOOT SYSTEM
  400.  
  401. RET
  402.  
  403.  
  404.  
  405.  
  406.  
  407. ;gET A CHARACTER FROM THE MODEM: RETURN IN hl
  408.  
  409. MCHIN:
  410.  
  411. PUSHBC
  412.  
  413. ;START OR hp125 CODE
  414.  
  415.         PUSH    DE
  416.  
  417.         LD      C,03H
  418.  
  419.         CALL    BDOS
  420.  
  421.         POP     DE
  422.  
  423.  
  424.  
  425. ;END OF hp CODE
  426.  
  427.  
  428.  
  429. LDL,A; PUT IN hl
  430.  
  431. LDH,0
  432.  
  433. ORA; SET/CLEAR z
  434.  
  435. POPBC
  436.  
  437. RET
  438.  
  439.  
  440.  
  441. ;sEND A CHARACTER TO THE MODEM
  442.  
  443. MCHOUT:
  444.  
  445. LDHL,2; GET THE CHARACTER
  446.  
  447. ADDHL,SP
  448.  
  449. LDA,(HL)
  450.  
  451.  
  452.  
  453. ;START OF hp CODE                     
  454.  
  455.         PUSH    BC
  456.  
  457.         PUSH    DE
  458.  
  459.         LD      E,A
  460.  
  461.         LD      C,04H
  462.  
  463.         CALL    BDOS
  464.  
  465.         POP     DE
  466.  
  467.         POP     BC
  468.  
  469. ;END OF hp CODE                     
  470.  
  471. RET; DONE
  472.  
  473.  
  474.  
  475. ;tEST FOR OUTPUT READY: RETURN true (1) IN hl IF OK
  476.  
  477. MORDY:
  478.  
  479. ;START OF hp CODE                       
  480.  
  481.  
  482.  
  483.         LD      H,0
  484.  
  485.         LD      L,1
  486.  
  487.  
  488.  
  489. ;END OF HP CODE                      
  490.  
  491.  
  492.  
  493. LDA,L; SET/CLEAR z
  494.  
  495. ORA
  496.  
  497. RET
  498.  
  499.  
  500.  
  501. ;tEST FOR CHARACTER AT MODEM: RETURN true (1) IN hl IF SO
  502.  
  503. MIRDY:
  504.  
  505. ;START OF HP CODE                   
  506.  
  507.  
  508.  
  509.         PUSH    BC
  510.  
  511.         PUSH    DE
  512.  
  513.         LD      BC,70FFH
  514.  
  515.         CALL    BDOS
  516.  
  517.         LD      H,0
  518.  
  519.         LD      L,A
  520.  
  521.         POP     DE
  522.  
  523.         POP     BC
  524.  
  525.         
  526.  
  527.  
  528.  
  529. ;END OG hp CODE                     
  530.  
  531. LDA,L; SET/CLEAR z
  532.  
  533. ORA
  534.  
  535. RET
  536.  
  537.  
  538.  
  539. ;sEND A BREAK TO THE MODEM: LEAVE EMPTY IF YOUR SYSTEM CAN'T DO IT
  540.  
  541. SNDBRK:
  542.  
  543. ; <== iNSERT YOUR OWN CODE HERE
  544.  
  545.  
  546.  
  547. LDHL,300; WAIT 300 Ms
  548.  
  549. CALLWAITHM 
  550.  
  551.  
  552.  
  553. ; <== eND OF YOUR OWN CODE
  554.  
  555. RET
  556.  
  557. ;
  558.  
  559. ;tEST uart FLAGS FOR ERROR: RETURN true (1) IN hl IF ERROR.
  560.  
  561. MDMERR:
  562.  
  563. ; <== iNSERT YOUR OWN CODE HERE
  564.  
  565.  
  566.  
  567. ; <== eND OF YOUR OWN CODE
  568.  
  569. LDA,L; SET/CLEAR z
  570.  
  571. ORA
  572.  
  573. RET
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581. ;tURN dtr on
  582.  
  583. DTRON:
  584.  
  585. ; <== iNSERT YOUR OWN CODE HERE
  586.  
  587.  
  588.  
  589. ; <== eND OF YOUR OWN CODE
  590.  
  591. RET
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599. ;tURN dtr off
  600.  
  601. DTROFF:
  602.  
  603. ; <== iNSERT YOUR OWN CODE HERE
  604.  
  605.  
  606.  
  607.  
  608.  
  609. ; <== eND OF YOUR OWN CODE
  610.  
  611. RET
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619. ;iNITIALISE THE UART
  620.  
  621.  
  622.  
  623. INIT:
  624.  
  625.  
  626.  
  627. LDHL,2; GET PARAMETERS
  628.  
  629. ADDHL,SP
  630.  
  631. EXDE,HL
  632.  
  633. CALLGETPARM; IN hl
  634.  
  635. LD(BRATE),HL; BAUD RATE
  636.  
  637. CALLGETPARM
  638.  
  639. LD(PARITY),HL; PARITY
  640.  
  641. CALLGETPARM
  642.  
  643. LD(DATA),HL; DATA BITS (binary 7 OR 8)
  644.  
  645. CALLGETPARM
  646.  
  647. LD(STOP),HL; STOP BITS (binary 1 OR 2)
  648.  
  649.  
  650.  
  651.  
  652.  
  653. ; <== iNSERT YOUR OWN CODE HERE
  654.  
  655. ; USING VALUES BELOW
  656.  
  657. LD(MSPEED),A; DON'T FORGET TO LOAD MSPEED WITH THE
  658.  
  659. ; CURRENT BRATE VALUE IF THE NEW RATE IS
  660.  
  661. ; VALID. sEE TABLE OF VALUES BELOW.
  662.  
  663. ; <== eND OF YOUR OWN CODE
  664.  
  665. RET
  666.  
  667. ;--------------------------------------------------------------------------
  668.  
  669.  
  670.  
  671. STOP:DW1; STOP BITS
  672.  
  673. PARITY:DW'n'; PARITY
  674.  
  675. DATA:DW8; DATA BITS
  676.  
  677. BRATE:DW7; BAUD RATE:
  678.  
  679.  
  680.  
  681. ;--------------------------------------------------------------------------
  682.  
  683. ;vALUES OF BRATE FOR EACH BAUD RATE
  684.  
  685. ;
  686.  
  687. ; BAUD RATE    BRATE
  688.  
  689. ;
  690.  
  691. ;   110 0
  692.  
  693. ;   300 1
  694.  
  695. ;   450 2
  696.  
  697. ;   600 3
  698.  
  699. ;   710 4
  700.  
  701. ;  1200 5
  702.  
  703. ;  2400 6
  704.  
  705. ;  4800 7
  706.  
  707. ;  9600 8
  708.  
  709. ; 19200 9
  710.  
  711. ; 3840010
  712.  
  713. ; 57600         11
  714.  
  715. ; 76800         12
  716.  
  717. ;
  718.  
  719.  
  720.  
  721. ;
  722.  
  723. ; sET THE PORT. zmp SUPPLIES EITHER 0 OR 1 AS A PARAMETER.
  724.  
  725. ;
  726.  
  727. SETPORT:
  728.  
  729. LDHL,2; GET PORT NUMBER
  730.  
  731. ADDHL,SP
  732.  
  733. EXDE,HL
  734.  
  735. CALLGETPARM; IN hl (VALUES ARE 0 AND 1)
  736.  
  737.  
  738.  
  739. ; <== iNSERT YOUR OWN CODE HERE
  740.  
  741.  
  742.  
  743. ; <== eND OF YOUR OWN CODE
  744.  
  745. RET
  746.  
  747. ;****************************************************************************
  748.  
  749. ;vIDEO TERMINAL SEQUENCES: FOR THE hp125                           
  750.  
  751. ;cURSOR ADDRESSING: 
  752.  
  753. CURSADD:
  754.  
  755. LDHL,2; GET PARAMETERS
  756.  
  757. ADDHL,SP
  758.  
  759. EXDE,HL
  760.  
  761. CALLGETPARM; IN hl
  762.  
  763. LD(ROW),HL; ROW
  764.  
  765. CALLGETPARM
  766.  
  767. LD(COL),HL; COLUMN
  768.  
  769. ; <== iNSERT YOUR OWN CODE HERE
  770.  
  771. ; USING VALUES IN ROW AND COL
  772.  
  773. ;START HP SEQUENCE
  774.  
  775.         CALL    PRINT            
  776.  
  777.         DB      ESC,'&A',0
  778.  
  779.         PUSH    BC
  780.  
  781.         PUSH    DE
  782.  
  783.         PUSH    HL
  784.  
  785.         LD      HL,(ROW)
  786.  
  787.         CALL    CONV
  788.  
  789.         LD      A,(TENS)
  790.  
  791.         CALL    COUT
  792.  
  793.         LD      A,(DIGITS)
  794.  
  795.         CALL    COUT
  796.  
  797.         LD      A,'R'
  798.  
  799.         CALL    COUT
  800.  
  801.         LD      HL,(COL)
  802.  
  803.         CALL    CONV
  804.  
  805.         LD      A,(TENS)
  806.  
  807.         CALL    COUT 
  808.  
  809.         LD      A,(DIGITS)
  810.  
  811.         CALL    COUT
  812.  
  813.         LD      A,'c'
  814.  
  815.         CALL    COUT
  816.  
  817.         POP     HL
  818.  
  819.         POP     DE
  820.  
  821.         POP     BC
  822.  
  823.         RET
  824.  
  825. ; <== END OF YOUR OWN CODE
  826.  
  827. ;MORE HP CODE FOR CURSOR CONTROL
  828.  
  829. CONV:   LD      DE,0000H
  830.  
  831.         LD      BC,000AH
  832.  
  833. LOOP16: SBC     HL,BC
  834.  
  835.         JP      M,DONE
  836.  
  837.         INC     E
  838.  
  839.         JP      LOOP16
  840.  
  841. DONE:   ADD     HL,BC
  842.  
  843.         LD      A,L
  844.  
  845.         ADD     A,48
  846.  
  847.         LD      (DIGITS),A
  848.  
  849.         LD      A,E
  850.  
  851.         ADD     A,48
  852.  
  853.         LD      (TENS),A
  854.  
  855.         RET
  856.  
  857. DIGITS: DS      1
  858.  
  859. TENS:   DS      1 
  860.  
  861. ; END OF HP ADDED CODE FOR CURSOR CONTROL
  862.  
  863. ROW:DS2; ROW
  864.  
  865. COL:DS2; COLUMN
  866.  
  867.  
  868.  
  869.  
  870.  
  871. ;cLEAR SCREEN:
  872.  
  873. CLS:
  874.  
  875. CALLPRINT
  876.  
  877. DB1BH,'h',1BH,'j',0
  878.  
  879. RET
  880.  
  881.  
  882.  
  883. ;iNVERSE VIDEO ON:
  884.  
  885. INVON:
  886.  
  887. CALLPRINT
  888.  
  889. DB1BH,'&Da',0
  890.  
  891. RET
  892.  
  893.  
  894.  
  895. ;iNVERSE VIDEO OFF:
  896.  
  897. INVOFF:
  898.  
  899. CALLPRINT
  900.  
  901. DB1BH,'&D@',0
  902.  
  903. RET
  904.  
  905.  
  906.  
  907. ;tURN OFF CURSOR:
  908.  
  909. HIDE:
  910.  
  911. RET
  912.  
  913.  
  914.  
  915. ;tURN ON CURSOR:
  916.  
  917. SHOW:
  918.  
  919. RET
  920.  
  921.  
  922.  
  923. ;sAVE CURSOR POSITION:
  924.  
  925. SAVECU:
  926.  
  927. RET
  928.  
  929.  
  930.  
  931. ;rESTORE CURSOR POSITION:
  932.  
  933. RESCU:
  934.  
  935. RET
  936.  
  937.  
  938.  
  939. ;****************************************************************************
  940.  
  941.  
  942.  
  943. ;sERVICE MODEM INTERRUPT:
  944.  
  945. MINT:
  946.  
  947. RET; MY SYSTEM DOESN'T NEED THIS
  948.  
  949.  
  950.  
  951. ;iNITIALISE INTERRUPT VECTORS:
  952.  
  953. INVEC:
  954.  
  955. RET; DITTO
  956.  
  957.  
  958.  
  959. ;dE-INITIALISE INTERRUPT VECTORS:
  960.  
  961. DINVEC:
  962.  
  963. RET; DITTO
  964.  
  965.  
  966.  
  967. ;****************** eND OF USER-DEFINED CODE ********************************
  968.  
  969. ;dO NOT CHANGE ANYTHING BELOW HERE.
  970.  
  971.  
  972.  
  973. ;mODEM CHARACTER TEST FOR 100 MS
  974.  
  975. MRD:
  976.  
  977. PUSHBC; SAVE BC
  978.  
  979. LDBC,100; SET LIMIT
  980.  
  981. MRD1:
  982.  
  983. CALLMIRDY; CHAR AT MODEM?
  984.  
  985. JRNZ,MRD2; YES, EXIT
  986.  
  987. LDHL,1; ELSE WAIT 1MS
  988.  
  989. CALLWAITHM
  990.  
  991. DECBC; LOOP TILL DONE
  992.  
  993. LDA,B
  994.  
  995. ORC
  996.  
  997. JRNZ,MRD1
  998.  
  999. LDHL,0; NONE THERE, RESULT=0
  1000.  
  1001. XORA
  1002.  
  1003. MRD2:
  1004.  
  1005. POPBC
  1006.  
  1007. RET
  1008.  
  1009.  
  1010.  
  1011. ; iNLINE PRINT ROUTINE: DESTROYS a AND hl
  1012.  
  1013.  
  1014.  
  1015. PRINT:
  1016.  
  1017. EX(SP),HL; GET ADDRESS OF STRING
  1018.  
  1019. PLOOP:
  1020.  
  1021. LDA,(HL); GET NEXT
  1022.  
  1023. INCHL; BUMP POINTER
  1024.  
  1025. ORA; DONE IF ZERO
  1026.  
  1027. JRZ,PDONE
  1028.  
  1029. CALLCOUT; ELSE PRINT
  1030.  
  1031. JRPLOOP; AND LOOP
  1032.  
  1033. PDONE:
  1034.  
  1035. EX(SP),HL; RESTORE RETURN ADDRESS
  1036.  
  1037. RET; AND QUIT
  1038.  
  1039.  
  1040.  
  1041. ;
  1042.  
  1043. ;oUTPUT A CHARACTER IN a TO THE CONSOLE
  1044.  
  1045. ;
  1046.  
  1047. COUT:
  1048.  
  1049. PUSHBC; SAVE REGS
  1050.  
  1051. PUSHDE
  1052.  
  1053. PUSHHL
  1054.  
  1055. LDE,A; CHARACTER TO e
  1056.  
  1057. LDC,2
  1058.  
  1059. CALLBDOS; PRINT IT
  1060.  
  1061. POPHL
  1062.  
  1063. POPDE
  1064.  
  1065. POPBC
  1066.  
  1067. RET
  1068.  
  1069.  
  1070.  
  1071. ;wAIT(SECONDS)
  1072.  
  1073. WAIT:
  1074.  
  1075. LDHL,2
  1076.  
  1077. ADDHL,SP
  1078.  
  1079. EXDE,HL; GET DELAY SIZE
  1080.  
  1081. CALLGETPARM
  1082.  
  1083. ; FALL THRU TO..
  1084.  
  1085. ;wAIT SECONDS IN hl
  1086.  
  1087. WAITHLS:
  1088.  
  1089. PUSHBC; SAVE BC
  1090.  
  1091. PUSHDE; DE
  1092.  
  1093. PUSHIX; AND IX
  1094.  
  1095. LDIX,0; THEN POINT IX TO 0
  1096.  
  1097. ; SO WE DON'T UPSET MEMORY-MAPPED I/O
  1098.  
  1099.  
  1100.  
  1101. ;cALCULATE VALUES FOR LOOP CONSTANTS. nEED TO HAVE TWO LOOPS TO AVOID
  1102.  
  1103. ;   16-BIT OVERFLOW WITH CLOCK SPEEDS ABOVE 9 mhZ.
  1104.  
  1105.  
  1106.  
  1107. OUTERVALEQU(CLKSPD/10)+1
  1108.  
  1109. INNERVALEQU(6667/OUTERVAL)*CLKSPD
  1110.  
  1111.  
  1112.  
  1113. WAIT10:
  1114.  
  1115. LDB,OUTERVAL
  1116.  
  1117.  
  1118.  
  1119. WAIT11:
  1120.  
  1121. LDDE,INNERVAL
  1122.  
  1123.  
  1124.  
  1125. WAIT12:
  1126.  
  1127. BIT0,(IX); TIME-WASTERS
  1128.  
  1129. BIT0,(IX)
  1130.  
  1131. BIT0,(IX); 20 t-STATES EACH
  1132.  
  1133. BIT0,(IX)
  1134.  
  1135. BIT0,(IX)
  1136.  
  1137. BIT0,(IX)
  1138.  
  1139. DECDE
  1140.  
  1141. LDA,E
  1142.  
  1143. LDA,D
  1144.  
  1145. ORE
  1146.  
  1147. JRNZ,WAIT12; 150 t-STATES PER INNER LOOP
  1148.  
  1149. DJNZWAIT11; DECREMENT OUTER LOOP
  1150.  
  1151. DECHL; OK, DECREMENT COUNT IN HL
  1152.  
  1153. LDA,H
  1154.  
  1155. ORL
  1156.  
  1157. JRNZ,WAIT10
  1158.  
  1159. POPIX; DONE -- RESTORE IX
  1160.  
  1161. POPDE; DE
  1162.  
  1163. POPBC; AND BC
  1164.  
  1165. RET
  1166.  
  1167.  
  1168.  
  1169. ;wAIT MILLISECONDS
  1170.  
  1171. MSWAIT:
  1172.  
  1173. LDHL,2
  1174.  
  1175. ADDHL,SP
  1176.  
  1177. EXDE,HL; GET DELAY SIZE
  1178.  
  1179. CALLGETPARM
  1180.  
  1181. ; FALL THRU TO..
  1182.  
  1183. ;wAIT MILLISECONDS IN hl
  1184.  
  1185. WAITHM:
  1186.  
  1187. PUSHDE
  1188.  
  1189. W1MS0:
  1190.  
  1191. LDDE,39*CLKSPD
  1192.  
  1193. W1MS1:
  1194.  
  1195. DECDE
  1196.  
  1197. LDA,D
  1198.  
  1199. ORE
  1200.  
  1201. JRNZ,W1MS1
  1202.  
  1203. DECHL
  1204.  
  1205. LDA,H
  1206.  
  1207. ORL
  1208.  
  1209. JRNZ,W1MS0
  1210.  
  1211. POPDE
  1212.  
  1213. RET
  1214.  
  1215.  
  1216.  
  1217. ;gET NEXT PARAMETER FROM (DE) INTO HL
  1218.  
  1219. GETPARM:
  1220.  
  1221. EXDE,HL; GET ADDRESS INTO HL
  1222.  
  1223. LDE,(HL); GET LO
  1224.  
  1225. INCHL
  1226.  
  1227. LDD,(HL); THEN HI
  1228.  
  1229. INCHL; BUMP FOR NEXT
  1230.  
  1231. EXDE,HL; RESULT IN HL, ADDRESS STILL IN DE
  1232.  
  1233. RET
  1234.  
  1235.  
  1236.  
  1237. ;gET ADDRESS OF USER-DEFINED VARIABLES
  1238.  
  1239.  
  1240.  
  1241. GETVARS:
  1242.  
  1243. LDHL,USERVARS
  1244.  
  1245. RET
  1246.  
  1247.  
  1248.  
  1249. USERVARS:
  1250.  
  1251. DWOVERDRIVE; .ovr ETC. DRIVE/USER
  1252.  
  1253. DWOVERUSER
  1254.  
  1255. ;ADD HP STUFF
  1256.  
  1257. READIN: DB      0C3H
  1258.  
  1259. REAL:   DS      2
  1260.  
  1261. JVN:    DB      7
  1262.  
  1263. FLAG:   DB      0
  1264.  
  1265. OPCODE: DS      1
  1266.  
  1267. JUMP:   DS      2
  1268.  
  1269. JBUF:   EQU     JVN
  1270.  
  1271. ;END ADDED HP STUFF
  1272.  
  1273.  
  1274.  
  1275. END
  1276.  
  1277.                                                   
  1278.  
  1279.