Mercurial > hg > Members > kono > os9 > sbc09
view mc09/crtos9.asm @ 178:4d83154d2a78
add - {} some builtin in TL/1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Apr 2019 09:43:28 +0900 |
parents | 1a30cd6e5973 |
children |
line wrap: on
line source
* * micro-C driver under FLEX * * 12-Dec-81 M.Ohta,H.Tezuka * 12-Dec-2018 for OS-9 S.Kono * * * micro-C user program * _tylg set Prgrm+Objct _atrv set ReEnt+rev _rev set $00 _edition set 5 ifp1 use defsfile endc * OPT LIST INCLUDE "c.out" include compilers output * OPT NOL * x arguments pointer * u global variable area _start _00000 LEAS -256,S ALLOCATE WORK AREA leay _name,pcr pshs x,y POINT TO CONTENT OF ARGUMENT VECTOR leay ,u PSHS Y * allocate memory and change stack * try to allocate maximum memory if not specified ifndef __MEMSIZ LDD #(1024*48) else LDD #__MEMSIZ endif pshs d __0C004 os9 F$Mem bcc __0C005 ldd ,s subd #$1000 lblo exit can't get any memroy std ,s bra __0C004 __0C005 * y is heap upper bound * copy arg string ldx 4,s __0C007 tst ,x+ bne __0C007 clr ,-y __0C008 lda ,-x sta ,-y cmpx 4,s bne __0C008 sty 4,s leax ,y * copy saved arg into new stack * and change the stack ldy 2,s ldd 4,s std ,--x ldd 6,s std ,--x leas ,x * clear globals on Y LDD #_GLOBALS _0C002 CLR D,Y subd #1 BNE _0C002 _0C003 tfr y,d addd #_GLOBALS std heapp,y LBSR _INITIALIZE call initializer LBSR _main * exit clrb os9 F$Exit * * run time support * * _00001 PSHS D,X,Y multiply LDA ,S LDB 3,S MUL STB 4,S LDD 1,S MUL STB 5,S LDA 1,S LDB 3,S MUL ADDA 4,S ADDA 5,S LEAS 6,S initheap RTS * _00002 CLR ,-S signed divide CMPX #0 BPL _02000 COM ,S EXG D,X LBSR _00020 EXG D,X _02000 TSTA BPL _02001 COM ,S LBSR _00020 _02001 LBSR _00010 TFR X,D TST ,S+ BPL _02002 LBSR _00020 _02002 RTS * _00003 LBSR _00010 unsigned divide TFR X,D RTS * _00004 CLR ,-S signed modulous CMPX #0 BPL _04000 EXG D,X BSR _00020 EXG D,X _04000 TSTA BPL _04001 COM ,S BSR _00020 _04001 BSR _00010 TST ,S+ BPL _04002 BSR _00020 _04002 RTS * _00005 BSR _00010 unsigned modulous RTS * _00006 CMPX #0 signed left shift BMI _06001 _06000 BEQ _06009 LSLB ROLA LEAX -1,X BRA _06000 _06001 BEQ _06009 ASRA RORB LEAX 1,X BRA _06001 _06009 RTS * _00007 CMPX #0 unsined left shift BMI _07001 _07000 BEQ _07009 LSLB ROLA LEAX -1,X BRA _07000 _07001 BEQ _07009 LSRA RORB LEAX 1,X BRA _07001 _07009 RTS * _00008 CMPX #0 sined right shift BMI _08001 _08000 BEQ _08009 ASRA RORB LEAX -1,X BRA _08000 _08001 BEQ _08009 LSLB ROLA LEAX 1,X BRA _08001 _08009 RTS * _00009 CMPX #0 unsined right shift BMI _09001 _09000 BEQ _09009 LSRA RORB LEAX -1,X BRA _09000 _09001 BEQ _09009 LSLB ROLA LEAX 1,X BRA _09001 _09009 RTS * _00020 NEGA negate D reg NEGB SBCA #0 RTS * _00010 PSHS D,X divide subroutine CLRA CLRB LDX #17 _00011 SUBD 2,S BCC _00012 ADDD 2,S _00012 ROL 1,S ROL ,S ROLB ROLA LEAX -1,X BNE _00011 RORA RORB COM 1,S COM ,S PULS X LEAS 2,S RTS * * * * emod _eom