home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / robot-pd / 14400.ZIP / 14400B.DSK / lara-ram.src < prev    next >
Text File  |  1998-04-30  |  8KB  |  489 lines

  1.  
  2.  
  3. ; INCLUDEFILE LARA-RAM
  4. ; 24.03.89 YP,YG
  5.  
  6. RZIEL:EQU    #BAE9
  7. RDIST:EQU    RZIEL-$
  8.  
  9. RANF:
  10. SPSTO1:DEFS    2
  11. FARAD1:DEFS    3
  12. RST181:RST    #18
  13. DEFW    FARADR
  14. RAM11:DI
  15. EXX
  16. LD    H,#C1
  17. RAMRO1:OUT    (C),H
  18. EXX
  19. EI
  20. RET    ; => AUFZURUFENDE ROUTINE
  21.  
  22. FARADR:EQU    FARAD1+RDIST
  23.  
  24. LLDIR1:LDIR
  25. LIES1:LD    A,(DE)
  26. RET
  27. WRITE1:LD    (HL),A
  28. RET
  29. REND:
  30.  
  31. SPSTO:EQU    SPSTO1+RDIST
  32. SPSTON:EQU    LLDIR1+RDIST
  33.  
  34. LESE:PUSH    HL    ; LD A,(HL)
  35. PUSH    DE
  36. PUSH    BC
  37. EX    DE,HL
  38. CALL    LAM    ; LD A,(DE)
  39. POP    BC
  40. POP    DE
  41. POP    HL
  42. RET
  43.  
  44. LDDEA:EX    DE,HL    ; LD (DE),A
  45. CALL    SCHREI    ; LD (HL),A
  46. EX    DE,HL
  47. RET
  48.  
  49.  
  50. RST18:EQU    RST181+RDIST
  51. LLDIR:EQU    LLDIR1+RDIST
  52. RAMROU:EQU    RAMRO1+RDIST
  53. RAM1:EQU    RAM11+RDIST
  54. LIES:EQU    LIES1+RDIST
  55. WRITEB:EQU    WRITE1+RDIST
  56.  
  57. DISON:
  58. LD    (SPSTON),SP    ; ABSOLUTE ADRESSEN
  59. LD    SP,(SPSTO)    ; WERDEN ANGEPASST
  60. RET
  61. GO:LD    (SPSTO),SP
  62. LD    SP,(SPSTON)
  63. RET
  64. DISONE:
  65.  
  66.  
  67. RAMINI:
  68. PUSH    DE
  69. PUSH    HL
  70. PUSH    BC
  71. PUSH    AF
  72. LD    HL,RANF
  73. LD    DE,RZIEL
  74. LD    BC,REND-RANF
  75. LDIR
  76. LD    HL,(#BDEE)
  77. LD    (ESCIND),HL
  78. LD    A,#C9
  79. LD    (#BDEE),A
  80. POP    AF
  81. POP    BC
  82. POP    HL
  83. POP    DE
  84. RET
  85. ESCIND:DEFS    2
  86. VECAUF:
  87. DI
  88. EXX    ; R'
  89. LD    HL,(ESCIND)
  90. LD    (#BDEE),HL    ; RESET ERMOEGLICHEN
  91. POP    HL    ; ADRESSE NACH CALL
  92. LD    E,(HL)
  93. INC    HL
  94. LD    D,(HL)    ; ZIEL
  95. LD    HL,RAM1
  96. PUSH    HL    ; RET AUF RAM1
  97. PUSH    DE    ; AUFZURUFENDE ROUTINE
  98. JR    BACK1
  99. BACK:
  100. DI
  101. EX    AF,AF'
  102. LD    A,#C9
  103. LD    (#BDEE),A
  104. EX    AF,AF'
  105. EXX
  106. BACK1:LD    H,#C0    ; 3
  107. JP    RAMROU
  108.  
  109.  
  110. COUTD:JP    #BC8C    ; CAS OUT OPEN
  111. COCHRD:JP    #BC95    ; CAS OUT CHAR
  112. COCLOD:JP    #BC8F    ; CAS OUT CLOSE
  113. CIND:JP    #BC77    ; CAS IN OPEN
  114. CICHRD:JP    #BC80    ; CAS IN CHAR
  115. CICLOD:JP    #BC7A    ; CAS IN CLOSE
  116. CASOUT:CALL    VECAUF
  117. DEFW    #BC8C    ; CAS OUT OPEN
  118. COUDIR:CALL    VECAUF
  119. DEFW    #BC98    ; CAS OUT DIRECT
  120. COUCHR:CALL    VECAUF
  121. DEFW    #BC95    ; CAS OUT CHAR
  122. COUCLO:CALL    VECAUF
  123. DEFW    #BC8F    ; CAS OUT CLOSE
  124. COUABA:CALL    VECAUF
  125. DEFW    #BC92    ; CAS OUT ABANDON
  126. CINABA:CALL    VECAUF
  127. DEFW    #BC7D    ; CAS IN ABANDON
  128. CASIN:CALL    VECAUF
  129. DEFW    #BC77    ; CAS IN OPEN
  130. CASIND:CALL    VECAUF
  131. DEFW    #BC83    ; CAS IN DIRECT
  132. CINCHR:CALL    VECAUF
  133. DEFW    #BC80    ; CAS IN CHAR
  134. CASCAT:CALL    VECAUF
  135. DEFW    #BC9B    ; CAS CATALOG
  136. CINCLO:CALL    VECAUF
  137. DEFW    #BC7A    ; CAS IN CLOSE
  138. CURENA:CALL    VECAUF
  139. DEFW    #BB7B    ; TXT CUR ENABLE
  140. CURON:CALL    VECAUF
  141. DEFW    #BB81    ; TXT CUR ON
  142. CUROFF:CALL    VECAUF
  143. DEFW    #BB84    ; TXT CUR OFF
  144. TXTINI:CALL    VECAUF
  145. DEFW    #BB4E    ; TXT INITIALISE
  146. TXTOPU:CALL    VECAUF    ; VOR DEFW.. MUSS CALL SEIN
  147. DEFW    #BB5A    ; TXT OUTPUT
  148. RDCHAR:CALL    VECAUF
  149. DEFW    #BB60    ; TXT READ CHAR
  150. PLCECR:CALL    VECAUF
  151. DEFW    #BB8A    ; TXT PLACE CURSOR
  152. SETCUR:CALL    VECAUF
  153. DEFW    #BB75    ; TXT SET CURSOR
  154. SETCOL:CALL    VECAUF
  155. DEFW    #BB6F    ; TXT SET COLUMN
  156. GETCUR:CALL    VECAUF
  157. DEFW    #BB78    ; TXT GET CURSOR  
  158. VALIDA:CALL    VECAUF
  159. DEFW    #BB87    ; TXT VALIDATE  
  160. SCRRES:CALL    VECAUF
  161. DEFW    #BC02    ; SCR RESET
  162. SETMOD:CALL    VECAUF
  163. DEFW    #BC0E    ; SCR SET MODE
  164. GETMOD:CALL    VECAUF
  165. DEFW    #BC11    ; SCR GET MODE  
  166. CHRLIM:CALL    VECAUF
  167. DEFW    #BC17    ; SCR CHAR LIMITS
  168. SETBAS:CALL    VECAUF
  169. DEFW    #BC08    ; SCR SET BASE
  170. GETLOC:CALL    VECAUF
  171. DEFW    #BC0B    ; SCR GET LOCATION  
  172. SETLOC:CALL    VECAUF
  173. DEFW    #BC05    ; SCR SET OFFSET
  174. GETPOS:CALL    VECAUF
  175. DEFW    #BC1A    ; SCR CHAR POSITION   
  176. WCHAR:CALL    VECAUF
  177. DEFW    #BB06    ; KM WAIT CHAR
  178. RCHAR:CALL    VECAUF
  179. DEFW    #BB09    ; KM READ CHAR  
  180. CHRRET:JP    #BB0C    ; KM CHAR RETURN
  181. SETSFT:CALL    VECAUF
  182. DEFW    #BB2D    ; KM SET SHIFT 
  183. SETEXP:
  184. JP    #BB0F    ; KM SET EXPAND
  185. TSTKEY:
  186. JP    #BB1E    ; KM TEST KEY
  187. PRTCHR:CALL    VECAUF
  188. DEFW    #BD2B    ; MC PRINT CHAR  
  189. TSTPRT:CALL    VECAUF
  190. DEFW    #BD2E    ; MC BUSY PRINTER  
  191. WTFLY:CALL    VECAUF
  192. DEFW    #BD19    ; MC WAIT FLYBACK   
  193. ROMWLK:CALL    VECAUF
  194. DEFW    #BCCB    ; KL ROM WALK
  195. KLFCOM:CALL    VECAUF
  196. DEFW    #BCD4    ; KL FIND COMMAND
  197. KLLDIR:CALL    VECAUF
  198. DEFW    #B91B    ; KL LDIR
  199. SCHREI:CALL    VECAUF
  200. DEFW    WRITEB    ; LD (HL),A
  201. VLDDR:; LDDR
  202. PUSH    HL
  203. LD    HL,#B8ED
  204. JR    LDIR1
  205. VLDIR:; LDIR
  206. PUSH    HL
  207. LD    HL,#B0ED
  208. LDIR1:LD    (LLDIR),HL
  209. LD    HL,LLDIR
  210. LD    (ADSTOR),HL
  211. LD    L,A
  212. EX    (SP),HL
  213. CALL    ROMAUF
  214. EX    (SP),HL
  215. LD    A,L
  216. POP    HL
  217. RET
  218.  
  219. VCPIR:; CPIR
  220. PUSH    HL
  221. LD    HL,#B1ED
  222. JR    LDIR1
  223. VCPI:; CPI
  224. PUSH    HL
  225. LD    HL,#A1ED
  226. JR    LDIR1
  227.  
  228. LAM:LD    HL,LIES    ; LD A,(DE)
  229. LD    A,(ROMNUM)
  230. LD    C,A    ; ROM
  231. FRPCHL:CALL    VECAUF    ; KL FAR PCHL
  232. DEFW    #1B
  233. ROMAUF:; RST #18
  234. PUSH    AF
  235. PUSH    HL
  236. LD    HL,(ADSTOR)
  237. LD    (FARADR),HL
  238. LD    A,(ROMNUM)
  239. LD    (FARADR+2),A
  240. POP    HL
  241. POP    AF
  242. RUNROU:CALL    VECAUF
  243. DEFW    RST18
  244.  
  245. LAGAF:DEFW    #FF00    ; WIE BEIM BOOTEN
  246. LAGHL:DEFW    #ABFF
  247. LAGDE:DEFW    #40
  248. LAGBC:DEFW    #B0FF
  249. LAGIX:DEFW    0
  250. LAGIY:DEFW    0
  251. LAGIR:DEFW    0
  252. LAGSP:DEFS    2
  253. LAGPC:DEFW    #F
  254.  
  255. ADSTOR:DEFS    2    ; SPEICHER FUER FARADRESSE
  256.  
  257. DIVINI:
  258. POP    DE    ; RET
  259. LD    (STACK),SP    ; SP VON TOPLEVEL
  260. LD    HL,-128
  261. ADD    HL,SP
  262. PUSH    DE
  263. LD    (LAGSP),HL    ; STACK FUER AUFGERUFENE ROUTINEN
  264. LD    (DEFSP),HL
  265. LD    DE,#10    ; RST 10H
  266. LD    (HL),E
  267. INC    HL
  268. LD    (HL),D    ; STANDART-RET
  269.  
  270. CALL    #B906    ; LROM ON
  271. PUSH    AF
  272. LD    HL,(#BB22)    ; ZIEL KM GET STATE
  273. RES    7,H
  274. RES    6,H    ; HL:=0..3FFF
  275. INC    HL    ; "LD HL," UEBERLESEN
  276. LD    A,(HL)
  277. INC    HL
  278. LD    H,(HL)
  279. LD    L,A
  280. INC    HL
  281. LD    (SHIFT),HL    ; HL=>KM FLAG SHIFT
  282. DEC    HL    ; HL=>CAPS FLAG
  283. LD    A,(HL)
  284. INC    HL
  285. LD    L,(HL)
  286. LD    H,A
  287. LD    (SFTSTT),HL    ; SHIFT/CAPS STATUS
  288. POP    AF
  289. JP    #B90C    ; KL ROM RESTORE
  290.  
  291. MEMSAV:
  292. CALL    GETLOC    ; SCHIRMPOS
  293. CP    #C0
  294. LD    HL,EBSLOW
  295. JP    NZ,WRONG    ; SCHIRM MUSS OBEN SEIN
  296. CALL    RTOMEM    ; HL=ROUTINE IN SCHIRM
  297. LD    C,#FF    ; RAM
  298. CALL    FRPCHL    ; AUSFUEHREN
  299. CALL    RTOMEM    ; ROUTINE WIEDER EINTAUSCHEN
  300. JP    EDVECT
  301. TOTWO:
  302. DI
  303. LD    BC,#7FC6
  304. OUT    (C),C
  305. LD    HL,#8000
  306. LD    DE,#4000
  307. LD    BC,#4000
  308. LDIR    ; 2 -> 2*
  309. LD    BC,#7FC0
  310. OUT    (C),C
  311. LD    HL,#4000
  312. LD    DE,#8000
  313. LD    BC,#4000
  314. LDIR    ; 1 -> 2
  315. LD    BC,#7FC5
  316. OUT    (C),C
  317. LD    HL,#8000
  318. LD    DE,#4000
  319. LD    BC,#4000
  320. LDIR    ; 2 -> 1*
  321. LD    BC,#7FC6
  322. OUT    (C),C
  323. LD    HL,#4000
  324. LD    DE,#8000
  325. LD    BC,#4000
  326. LDIR    ; 2* -> 2
  327. LD    BC,#7FC4
  328. OUT    (C),C
  329. LD    HL,#0000
  330. LD    DE,#4000
  331. LD    BC,#4000
  332. LDIR    ;     ; 0 -> 0*
  333. LD    BC,#7FC0
  334. OUT    (C),C
  335. EI
  336. RET
  337. MEMLD:
  338. DI
  339. LD    HL,#0008
  340. LD    DE,BUFFER
  341. LD    BC,#1B-8
  342. LDIR    ; WICHTIGSTE VECTOREN MERKEN
  343. LD    BC,#7FC2
  344. OUT    (C),C    ; 1* - 4*
  345. LD    HL,BUFFER
  346. LD    DE,#0008
  347. LD    BC,#1B-8
  348. MEMCMP:
  349. LD    A,(DE)
  350. INC    DE
  351. CPI
  352. JR    NZ,$+5    ; UNGLEICH
  353. JP    PE,MEMCMP
  354. LD    BC,#7FC1
  355. OUT    (C),C
  356. LD    HL,ENTSVD    ; NICHT GESPEICHERT
  357. JP    NZ,WRONG
  358. CALL    GETMOD    ; SCREEN MODE HOLEN
  359. PUSH    AF
  360. CALL    GETLOC
  361. PUSH    HL    ; SCREEN OFFSET
  362. CP    #C0
  363. LD    HL,#4000
  364. LD    BC,#4000
  365. LD    DE,#C000
  366. CALL    NZ,KLLDIR    ; WENN BASE LOW, SCHIRM RETTEN
  367. CALL    GETCUR    ; CURSOR HOLEN
  368. PUSH    HL
  369. DI
  370. LD    BC,#7FC3    ; 3+3*
  371. OUT    (C),C
  372. LD    HL,#5000    ; DORTHIN KOMMT #D000
  373. LD    DE,BUFFER
  374. LD    BC,48    ; TEIL VON SCHIRM WO STACK
  375. LDIR    ; HINKOMMT MERKEN
  376. LD    BC,#7FC1    ; 3*
  377. OUT    (C),C
  378. EI
  379. CALL    RFRMEM
  380. LD    C,#FF
  381. CALL    FRPCHL
  382. CALL    RFRMEM
  383. DI
  384. LD    BC,#7FC3    ; 3+3*
  385. OUT    (C),C
  386. LD    HL,BUFFER
  387. LD    DE,#5000
  388. LD    BC,48    ; TEIL VON SCHIRM WO STACK
  389. LDIR    ; WAR HOLEN
  390. LD    BC,#7FC1    ; 3*
  391. OUT    (C),C
  392. EI
  393. POP    HL
  394. CALL    SETCUR    ; CURSOR SETZEN
  395. POP    HL
  396. CALL    SETLOC    ; SCREEN OFFSET SETZEN
  397. CALL    GETMOD
  398. POP    HL
  399. CP    H
  400. LD    A,2
  401. CALL    NZ,SETMOD    ; MODE WURDE GEWECHSELT
  402. JP    SCR3    ; SCREEN BASIS AUSGEBEN UND EDIT
  403. TOONE:
  404. DI
  405. PUSH    HL    ; => TOONE
  406. LD    HL,2    ; PUSH HL UEBERLESEN
  407. ADD    HL,SP
  408. LD    DE,#D000
  409. LD    BC,48    ; 24 EBENEN SOLLTEN REICHEN
  410. LDIR    ; STACK MERKEN
  411. POP    DE    ; => TOONE
  412. LD    HL,SPVMRK-TOONE+1
  413. ADD    HL,DE    ; HL=> SP-SPEICHER+1
  414. EX    DE,HL
  415. LD    HL,0
  416. ADD    HL,SP
  417. EX    DE,HL
  418. LD    (HL),D    ; SP HIGH
  419. DEC    HL
  420. LD    (HL),E
  421. LD    SP,HL
  422. PUSH    HL    ; => SP-SPEICHER
  423. LD    BC,#7FC5
  424. OUT    (C),C
  425. LD    HL,#4000
  426. LD    DE,#8000
  427. LD    BC,#4000
  428. LDIR    ; 1* -> 2
  429. LD    BC,#7FC0
  430. OUT    (C),C
  431. LD    HL,#8000
  432. LD    DE,#4000
  433. LD    BC,#4000
  434. LDIR    ; 2 -> 1
  435. LD    BC,#7FC6
  436. OUT    (C),C
  437. LD    HL,#4000
  438. LD    DE,#8000
  439. LD    BC,#4000
  440. LDIR    ; 2* -> 2
  441. LD    BC,#7FC4
  442. OUT    (C),C
  443. LD    HL,#4000
  444. LD    DE,#0000
  445. LD    BC,#4000
  446. LDIR    ; 0* -> 0
  447. POP    HL    ; => SP-SPEICHER
  448. LD    E,(HL)
  449. INC    HL
  450. LD    D,(HL)    ; ALTER SP
  451. PUSH    DE
  452. LD    HL,#D000
  453. LD    BC,48
  454. LDIR    ; ALTEN STACK WIEDER HOLEN
  455. POP    HL    ; SP
  456. LD    SP,HL
  457. EI
  458. RET
  459. DEFS    8    ; STACK FUER VERSCHIEBEROUTINEN
  460. SPVMRK:DEFS    2
  461. NOTSCR:DEFS    1
  462. SCRPOS:DEFS    2
  463. RTOMEM:; SPEICHER IN RAM
  464. LD    B,MEMLD-TOTWO
  465. LD    DE,TOTWO
  466. JR    RMEMCN
  467. RFRMEM:; SPEICHER AUS RAM
  468. LD    B,NOTSCR-TOONE
  469. LD    DE,TOONE
  470. RMEMCN:LD    HL,#C000
  471. PUSH    HL
  472. EX    DE,HL
  473. CALL    SWINOUT
  474. POP    HL
  475. RET
  476. SWINOUT:; HL=>LARA , DE=>MEM
  477. EX    DE,HL
  478. CALL    LESE    ; LD A,(HL) AUS MEM
  479. EX    DE,HL
  480. LD    C,A
  481. LD    A,(HL)
  482. LD    (HL),C
  483. CALL    LDDEA    ; LD (DE),A
  484. INC    DE
  485. INC    HL
  486. DJNZ    SWINOUT
  487. RET
  488.     3
  489. RST18